تابع بخشی از کد است که یک کار خاص را انجام میدهد و میتواند توسط برنامهنویس برای انجام وظایف مختلفی در برنامه فراخوانی شود.
کپسولهسازی (Encapsulation) یکی از اصول اصلی در برنامهنویسی شیءگرا (OOP) است که به معنای مخفی کردن جزئیات داخلی شیء و فقط نمایش رابط کاربری آن به دیگر بخشهای برنامه است. به عبارت دیگر، کپسولهسازی به این معناست که دادهها و متدهای یک شیء بهطور داخلی در آن شیء قرار میگیرند و تنها از طریق متدهای عمومی (public methods) قابل دسترسی هستند. این ویژگی باعث افزایش امنیت دادهها، کاهش پیچیدگی کد، و تسهیل نگهداری و گسترش برنامهها میشود.
هدف اصلی کپسولهسازی، محدود کردن دسترسی به اطلاعات داخلی و حفظ انسجام (cohesion) است. این اصل به این معناست که دادهها باید فقط از طریق متدهایی که بهطور خاص برای دستکاری آنها طراحی شدهاند، تغییر یابند. در نتیجه، امکان بروز خطا در هنگام تغییر دادهها کاهش مییابد، زیرا هر تغییر باید از طریق یک متد مجاز انجام شود.
در زبانهای برنامهنویسی مانند Java، Python و C++، کپسولهسازی با استفاده از دسترسیهای خاص به ویژگیها و متدها پیادهسازی میشود. بهطور معمول، ویژگیهای یک کلاس به صورت خصوصی (private) و متدهای عمومی (public) برای دسترسی به دادهها تعریف میشوند.
در اینجا مثالی از کپسولهسازی در زبان Python آورده شده است:
class Person:
def __init__(self, name, age):
self.__name = name # ویژگی خصوصی
self.__age = age # ویژگی خصوصی
def get_name(self):
return self.__name # دسترسی به ویژگی از طریق متد عمومی
def set_name(self, name):
self.__name = name # تغییر ویژگی از طریق متد عمومی
def get_age(self):
return self.__age # دسترسی به ویژگی از طریق متد عمومی
def set_age(self, age):
if age > 0: # بررسی شرط قبل از تغییر داده
self.__age = age # تغییر ویژگی از طریق متد عمومی
else:
print("Age must be positive.") # ایجاد شیء از کلاس Person person1 = Person("John", 30) print(person1.get_name()) # خروجی: John person1.set_name("Doe") print(person1.get_name()) # خروجی: Doe person1.set_age(-5) # خروجی: Age must be positive. در این مثال، ویژگیهای name و age بهصورت خصوصی (private) تعریف شدهاند و فقط از طریق متدهای عمومی مانند get_name() و set_name() قابل دسترسی و تغییر هستند. این باعث میشود که دادهها تنها از طریق متدهای مجاز تغییر یابند و اطمینان حاصل شود که تغییرات در دادهها تحت شرایط خاصی انجام میشود.
در زبان Java، کپسولهسازی مشابه است، اما بهطور معمول از کلمات کلیدی private، public و protected برای تعیین سطح دسترسی استفاده میشود:
public class Person {
private String name; // ویژگی خصوصی
private int age;
// ویژگی خصوصی
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name; // دسترسی به ویژگی از طریق متد عمومی
}
public void setName(String name) {
this.name = name; // تغییر ویژگی از طریق متد عمومی
}
public int getAge() {
return age; // دسترسی به ویژگی از طریق متد عمومی
}
public void setAge(int age) {
if (age > 0) { // بررسی شرط قبل از تغییر داده
this.age = age; // تغییر ویژگی از طریق متد عمومی
} else {
System.out.println("Age must be positive.");
}
} } public class Main {
public static void main(String[] args) {
Person person1 = new Person("John", 30);
System.out.println(person1.getName()); // خروجی: John
person1.setName("Doe");
System.out.println(person1.getName()); // خروجی: Doe
person1.setAge(-5); // خروجی: Age must be positive.
} } در اینجا، همانطور که در مثال Python مشاهده میشود، ویژگیهای name و age در کلاس Person بهصورت خصوصی (private) تعریف شدهاند و فقط از طریق متدهای عمومی مانند getName() و setName() قابل دسترسی و تغییر هستند.
کپسولهسازی علاوه بر محافظت از دادهها، باعث افزایش انعطافپذیری و مقیاسپذیری برنامهها میشود. این امکان را به برنامهنویسان میدهد که تغییرات در پیادهسازی داخلی یک کلاس را بدون تأثیر بر سایر بخشهای برنامه انجام دهند. این ویژگی در پروژههای بزرگ و تیمی اهمیت ویژهای دارد زیرا به کدها ساختار و نظم بیشتری میبخشد.
برای اطلاعات بیشتر، میتوانید از سایت saeidsafaei.ir و اسلایدهای محمد سعید صفایی بهرهبرداری کنید.
در این مبحث، پس از مطالعه مقدماتی در زمینه برنامهنویسی، اولین برنامه به زبان سیپلاسپلاس نوشته شده و به تحلیل قسمتهای مختلف آن پرداخته میشود. همچنین، مفاهیم اساسی مانند انواع متغیرها، عملگرها، ثابتها، تبدیل نوع، حوزه متغیرها و برخی از خطاهای رایج برنامهنویسی بررسی خواهند شد. هدف این جلسه، آشنایی با اصول اولیه برنامهنویسی در C++ و درک ساختار برنامهها و نحوه مدیریت دادهها است.
تابع بخشی از کد است که یک کار خاص را انجام میدهد و میتواند توسط برنامهنویس برای انجام وظایف مختلفی در برنامه فراخوانی شود.
بلاکچین به عنوان سرویس (BaaS) به ارائه زیرساخت بلاکچین به صورت سرویس توسط شرکتها برای پیادهسازی بلاکچین در اپلیکیشنها اشاره دارد.
محاسبات هوش مصنوعی لبه به پردازش دادهها در نزدیکی منابع داده در لبه شبکه اطلاق میشود که سرعت و دقت پردازش را افزایش میدهد.
دید ماشین به فناوریهایی اطلاق میشود که به دستگاهها این امکان را میدهند تا از طریق دوربینها و حسگرها محیط خود را درک کنند.
وضعیتی که در آن بستهها بهطور مداوم در حال گردش بین روترها هستند و هیچگاه به مقصد نمیرسند.
مدت زمانی که طول میکشد تا یک سیکل کامل از موج یا سیگنال انجام شود, معمولاً بر حسب ثانیه اندازهگیری میشود.
نویز ناشی از حرکت الکترونها در مواد نیمههادی یا فلزات که در اثر حرارت ایجاد میشود.
ارز دیجیتال به انواع ارزهای مبتنی بر فناوری بلاکچین گفته میشود که بهطور دیجیتال ذخیره و منتقل میشوند.
مقداری ثابت که به عنوان مرجع برای محاسبه هزینه لینک در پروتکلهای OSPF استفاده میشود.
دستور شرطی به دستوری اطلاق میشود که تصمیمگیریهایی را بر اساس شرایط خاص انجام میدهد، به طور معمول با استفاده از دستورات if, else و switch.
هوش مصنوعی در دستگاههای جاسازیشده به استفاده از الگوریتمهای هوش مصنوعی برای بهبود عملکرد دستگاههای کوچک و جاسازیشده اطلاق میشود.
بینشهای مبتنی بر هوش مصنوعی به استفاده از الگوریتمهای هوش مصنوعی برای تجزیه و تحلیل دادهها و استخراج الگوهای کاربردی و پیشبینی آینده اشاره دارد.
سیستمهای تحویل خودران به وسایل نقلیه و رباتهایی اطلاق میشود که بهطور خودکار کالاها را به مقصد ارسال میکنند.
گردوغبار هوشمند به سنسورها و دستگاههای ریز اشاره دارد که در مقیاس میکرو برای جمعآوری اطلاعات از محیط اطراف استفاده میشوند.
VLANای که بدون Tagging از طریق پورتهای Trunk عبور میکند.
محاسبات شناختی به استفاده از سیستمهای هوش مصنوعی برای شبیهسازی فرایندهای فکری انسانها و حل مسائل پیچیده اشاره دارد.
یادگیری ماشین برای امور مالی به استفاده از الگوریتمهای یادگیری ماشین برای پیشبینی روندهای بازار و مدیریت ریسک در صنعت مالی اطلاق میشود.
دادههایی که پردازش شده و به صورت معنادار و قابل فهم تبدیل شدهاند. این اطلاعات میتواند به شکل گزارشها، نمودارها یا هر نوع داده دیگر باشد که به کاربر منتقل میشود.
شبکهبندی فرآیند اتصال چندین دستگاه به یکدیگر است تا اطلاعات بین آنها تبادل شود.
آدرسهای IP که از subnet maskهای غیر استاندارد استفاده میکنند، ناشی از عملیاتهای Subnetting و Supernetting.
محاسبات حساس به موقعیت به توانایی سیستمها برای شناسایی و واکنش به شرایط و موقعیتهای خاص اشاره دارد.
یکپارچگی چند پلتفرمی به استفاده از سیستمها و ابزارهایی اطلاق میشود که امکان همکاری و ارتباط دادهها و سرویسها را در پلتفرمهای مختلف فراهم میکنند.
بازنویسی تابع به معنای تعریف مجدد تابع در یک کلاس مشتقشده با همان نام و امضای تابع در کلاس پایه است. این ویژگی در برنامهنویسی شیگرا برای تغییر رفتار توابع به کار میرود.
حافظه اولیه، که معمولاً شامل RAM و حافظه کش است، برای ذخیرهسازی دادههای در حال پردازش استفاده میشود.
اطلاعات زیستی به استفاده از دادهها و فناوریهای محاسباتی برای تجزیه و تحلیل اطلاعات زیستی مانند پروتئینها و ژنها اطلاق میشود.
ویژگیای در پروتکل STP که از دریافت پیامهای BPDU غیرمجاز جلوگیری میکند.
مهندسی تقویتشده توسط هوش مصنوعی به استفاده از الگوریتمهای هوش مصنوعی برای بهبود و تسهیل فرآیندهای مهندسی و طراحی اطلاق میشود.
عملیات Dereferencing زمانی است که از یک اشارهگر برای دسترسی به مقدار دادهای که آن اشارهگر به آن اشاره دارد، استفاده میشود.
بلاکچین 2.0 به نسخهای پیشرفته از بلاکچین گفته میشود که ویژگیهایی مانند قراردادهای هوشمند و مقیاسپذیری بهتر را ارائه میدهد.
فرایند تخصیص آدرس به دستگاههای مختلف در شبکه برای شناسایی و ارتباط میان آنها.
سیگنال آنالوگ سیگنالی است که میتواند هر مقدار پیوستهای از دادهها را منتقل کند.
بخشهایی از کد هستند که یک وظیفه خاص را انجام میدهند و میتوانند در نقاط مختلف برنامه فراخوانی شوند.
نمادهایی هستند که برای انجام عملیات ریاضی مانند جمع، تفریق، ضرب و تقسیم بر روی دادهها استفاده میشوند.
فرآیند تبدیل اطلاعات به کدی غیرقابل فهم برای محافظت از دادهها در برابر دسترسی غیرمجاز.
اینترنت اشیاء پزشکی (IoMT) به شبکهای از دستگاهها و حسگرهای پزشکی متصل به اینترنت اطلاق میشود که دادهها را برای نظارت بر بیماران ارسال میکنند.