واحد دادهای است که در پروتکلهای مختلف استفاده میشود. این واحد در هر لایه از مدل OSI تغییر شکل میدهد.
کپسولهسازی (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++ و درک ساختار برنامهها و نحوه مدیریت دادهها است.
واحد دادهای است که در پروتکلهای مختلف استفاده میشود. این واحد در هر لایه از مدل OSI تغییر شکل میدهد.
ماشینی است قابل برنامهریزی که از اجزای الکترونیکی و الکترومکانیکی تشکیل شده است و میتواند دادهها و دستورات را از محیط خارج دریافت کرده، آنها را پردازش کرده و نتایج را تحویل دهد.
کدی که برای گسترش دادهها در سیستمهای CDMA استفاده میشود تا از تداخل جلوگیری کرده و دادهها را از یکدیگر تفکیک کند.
زنجیرههای تأمین خودران به شبکههایی اطلاق میشود که قادرند بهطور خودکار فرآیندهای تولید و تأمین را بهینهسازی کنند.
مرزهای IoT به دستگاههای فیزیکی در شبکههای IoT اطلاق میشود که قادر به انجام پردازش و تحلیل دادهها در لبه شبکه هستند.
در این توپولوژی، تمامی دستگاهها به یک نقطه مرکزی (مانند سوئیچ یا هاب) متصل میشوند.
شبکههای عصبی مصنوعی (ANN) به مدلهای ریاضی اشاره دارد که از ساختار مغز انسان الهام گرفتهاند و برای پردازش دادهها استفاده میشوند.
دسترسی به اندیس خارج از محدوده یک آرایه به معنای تلاش برای دسترسی به عنصری است که خارج از ابعاد تعریفشده برای آرایه قرار دارد. این امر میتواند باعث بروز خطا در برنامه شود.
کابلهای زوج به هم تابیده بدون پوشش فلزی برای کاهش هزینه و نصب آسان.
بهینهسازی مسیرها و استفاده از منابع شبکه برای بهبود عملکرد کلی شبکه.
آرایه چندبعدی آرایهای است که بیش از یک بعد دارد. به عنوان مثال، آرایههای دو بعدی یا سه بعدی برای ذخیره دادههای پیچیدهتر استفاده میشود.
آگاهی مصنوعی به ایجاد سیستمهای هوش مصنوعی اطلاق میشود که قادر به تجربه و درک مشابه انسانها باشند.
نسخه چهارم پروتکل اینترنت که از آدرسهای 32 بیتی استفاده میکند.
حالت انتقال داده دو طرفه همزمان که در آن هر دو دستگاه میتوانند به صورت همزمان دادهها را ارسال و دریافت کنند.
ورودیهایی که به عنوان بخشی از خروجیهای قبلی سیستم وارد میشوند و تاثیر زیادی بر بهبود یا اصلاح فرآیندهای سیستم دارند.
متد مشابه به تابع است اما معمولاً در زبانهای شیگرا استفاده میشود و متعلق به یک کلاس خاص است. متدها میتوانند بر روی دادههای شی عمل کنند.
این واژه به پردازش دادهها در نزدیکی محل ایجاد آنها (در لبه شبکه) اشاره دارد، بهجای ارسال دادهها به مراکز داده اصلی. این باعث کاهش تأخیر و مصرف پهنای باند میشود.
محاسبات الهام گرفته از بیولوژی به استفاده از اصول و الگوهای موجود در طبیعت برای طراحی سیستمهای محاسباتی اطلاق میشود.
الگوریتم مرتبسازی انتخابی بر اساس انتخاب کوچکترین یا بزرگترین عنصر در هر مرحله و جابهجایی آن با مکان مناسب عمل میکند.
توابع هش رمزنگاری به توابع ریاضی اطلاق میشود که دادهها را به یک رشته ثابت طول تبدیل میکنند و برای امنیت دادهها استفاده میشوند.
روشهایی که دستگاهها در یک شبکه برای دسترسی به رسانه انتقال (مانند کابل یا امواج رادیویی) استفاده میکنند.
هوش مصنوعی در مراقبتهای بهداشتی به استفاده از الگوریتمها و مدلهای هوش مصنوعی برای بهبود خدمات پزشکی و پیشبینی بیماریها اطلاق میشود.
چگونگی چیدمان فیزیکی و منطقی اجزای شبکه که در آن نحوه اتصال گرهها و نحوه انتقال دادهها توصیف میشود.
آدرسهای IP که از subnet maskهای غیر استاندارد استفاده میکنند، ناشی از عملیاتهای Subnetting و Supernetting.
تبدیل عدد از مبنای دودویی به ده که هر رقم در مبنای دو را با ضرب در 2 به توان جایگاه آن محاسبه میکنیم.
هوش افزوده به تقویت توانمندیهای انسانی از طریق تکنولوژیهای هوش مصنوعی گفته میشود تا تصمیمگیریهای بهتری صورت گیرد.
سیستمهای خودمختار (AS) به سیستمهایی اطلاق میشود که قادر به تصمیمگیری و انجام وظایف بهطور خودکار بدون نیاز به انسان هستند.
ساختارهایی در برنامهنویسی هستند که به برنامه اجازه میدهند که یک مجموعه از دستورات را بارها و بارها اجرا کنند تا زمانی که یک شرط خاص برآورده شود.
نسل پنجم شبکههای مخابراتی (5G) سرعت اینترنت، اتصال بیشتر و تأخیر کمتری را نسبت به نسلهای قبلی ارائه میدهد.
هوش مصنوعی برای امنیت سایبری به استفاده از تکنولوژیهای هوش مصنوعی برای شناسایی و جلوگیری از تهدیدات امنیتی اشاره دارد.
حافظه داینامیک حافظهای است که در زمان اجرای برنامه تخصیص مییابد و میتوان آن را تغییر اندازه داد یا آزاد کرد.
بینشهای مبتنی بر هوش مصنوعی به استفاده از الگوریتمهای هوش مصنوعی برای تجزیه و تحلیل دادهها و استخراج الگوهای کاربردی و پیشبینی آینده اشاره دارد.
روشهای انتقال داده از یک دستگاه به دستگاه دیگر شامل Simplex، Half-Duplex و Full-Duplex.
سیستمهای چندعاملی به سیستمهایی گفته میشود که از چندین عامل خودمختار برای انجام وظایف بهطور همزمان استفاده میکنند.
شبکهای که مساحتی وسیعتر از یک LAN پوشش میدهد و معمولاً برای ارتباطات بین کشورها و قارهها استفاده میشود.