نوع داده به دستهبندی دادهها اطلاق میشود که میتواند مشخص کند یک متغیر چه نوع دادهای را میتواند ذخیره کند مانند عدد صحیح، اعشاری یا رشته.
کپسولهسازی (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++ و درک ساختار برنامهها و نحوه مدیریت دادهها است.
نوع داده به دستهبندی دادهها اطلاق میشود که میتواند مشخص کند یک متغیر چه نوع دادهای را میتواند ذخیره کند مانند عدد صحیح، اعشاری یا رشته.
کامپیوترهای آنالوگ برای پردازش دادههای پیوسته مانند دما، فشار و سرعت طراحی شدهاند.
درخت جستجوی دودویی نوع خاصی از درخت دودویی است که در آن هر گره چپ مقدار کوچکتر و هر گره راست مقدار بزرگتر از گره والد خود دارد.
دروازه منطقی AND که زمانی خروجی 1 میدهد که ورودیهای آن هر دو 1 باشند.
در فلوچارت، مرحله تصمیمگیری به لوزی گفته میشود که در آن بر اساس شرایط خاص، الگوریتم مسیر متفاوتی را انتخاب میکند.
حافظه دسترسی تصادفی (RAM) دادهها و دستورالعملها را به طور موقت ذخیره میکند و زمانی که پردازنده به آنها نیاز دارد، میتواند به سرعت به آنها دسترسی پیدا کند.
هایپراتوماسیون به استفاده از هوش مصنوعی، یادگیری ماشین و رباتیک برای خودکارسازی فرایندهای پیچیده و بهینهسازی کارهای تجاری اطلاق میشود.
هوش مصنوعی لبه (Edge AI) استفاده از مدلهای یادگیری ماشین و پردازش دادهها را در دستگاههای لبه شبکه (نزدیک به کاربر) تسهیل میکند.
حالت انتقال داده دو طرفه همزمان که در آن هر دو دستگاه میتوانند به صورت همزمان دادهها را ارسال و دریافت کنند.
محاسبات لبه در مراقبتهای بهداشتی به استفاده از پردازش دادهها در نزدیکی منابع دادههای پزشکی برای بهبود خدمات مراقبتی اطلاق میشود.
الگوریتمهای بیوانفورماتیک به استفاده از روشهای محاسباتی برای تجزیه و تحلیل دادههای زیستی مانند توالیهای ژنتیکی اطلاق میشود.
دوقلوهای دیجیتال به مدلسازی دقیق سیستمهای فیزیکی بهصورت دیجیتال برای شبیهسازی، نظارت و پیشبینی رفتار آنها گفته میشود.
اطلاعاتی است که به تشریح عملکرد سیستمها، نرمافزارها یا سختافزارها میپردازد.
توابع ریاضی توابعی هستند که عملیاتهای ریاضی مانند جمع، تفریق، ضرب، تقسیم، ریشهگیری و لگاریتمگیری را انجام میدهند. این توابع معمولاً در کتابخانههای استاندارد مانند cmath در C++ موجود هستند.
نویز ناشی از سیگنالهای الکتریکی غیرقابل پیشبینی که معمولاً از دستگاههای الکترونیکی و صنعتی تولید میشود.
وسایل نقلیه خودران به خودروهایی گفته میشود که بدون نیاز به راننده انسان حرکت میکنند.
سیگنال آنالوگ سیگنالی است که میتواند هر مقدار پیوستهای از دادهها را منتقل کند.
نرمافزارها شامل برنامهها و دادههای مرتبط هستند که سیستم کامپیوتری آنها را پردازش میکند.
اینترنت کوانتومی به شبکهای گفته میشود که بر اساس اصول فیزیک کوانتومی برای انتقال دادهها با امنیت بالا عمل میکند.
کد استاندارد برای تبادل اطلاعات متنی است که برای هر حرف، عدد یا نماد یک کد باینری مشخص در نظر میگیرد.
امنیت سایبری نسل بعدی به استفاده از تکنولوژیهای جدید برای شناسایی تهدیدات و محافظت از شبکهها و دادهها از حملات سایبری پیشرفته اطلاق میشود.
درج به معنای افزودن دادهها به ساختارهای دادهای مانند آرایهها یا لیستها است.
مجموعهای از شبکههای متصل که تحت کنترل یک یا چند مدیر شبکه قرار دارند و سیاست مسیریابی یکسانی را بهکار میبرند.
کابلی که شامل چندین سیم مسی عایقدار است و به صورت جفت به هم تابیده شدهاند تا نویز الکتریکی کاهش یابد.
اشارهگر یک متغیر است که آدرس حافظه یک متغیر دیگر را ذخیره میکند و به شما این امکان را میدهد که به دادهها از طریق آدرسهای حافظه دسترسی داشته باشید.
اولین و مهمترین سوئیچ در شبکه که مسئول تعیین بهترین مسیرها برای ارسال دادهها است.
قسمت صحیح یک عدد که بدون هیچ نقطه اعشاری است. این قسمت معمولاً در تبدیلهای مبنای مختلف ابتدا محاسبه میشود.
آرایه چندبعدی به آرایهای اطلاق میشود که هر عنصر آن یک آرایه چندبعدی است. این آرایهها برای ذخیره دادههایی با ابعاد مختلف مناسب هستند.
عملیات ماشین یادگیری (MLOps) شامل توسعه و استقرار مدلهای یادگیری ماشین به صورت مقیاسپذیر و کارآمد است.
روش دسترسی پویا که منابع مانند زمان یا فرکانس بهطور لحظهای و براساس نیاز کاربران تخصیص داده میشود.
پایگاه دادهای که در پروتکلهای مسیریابی Link State از آن برای ذخیره اطلاعات دقیق شبکه استفاده میشود.
آزادسازی حافظه به فرآیند آزاد کردن حافظه اختصاصیافته به برنامه یا دادهها پس از پایان استفاده از آنها اطلاق میشود.
واقعیت افزوده (AR) محیط واقعی را با اطلاعات دیجیتال یا تصاویر ترکیب میکند تا تجربهای تعاملی و غنی ایجاد کند.
جدول هش یک ساختار دادهای است که برای ذخیره دادهها بر اساس کلیدها و انجام عملیات جستجو سریع طراحی شده است.
ویرانگر یا دِسکتراکتور تابعی است که هنگام از بین بردن شیء از حافظه فراخوانی میشود و وظیفه آزادسازی منابع را دارد.