در حال بارگذاری...

کلاس‌ها و اشیاء

در سی‌پلاس‌پلاس، کلاس‌ها و اشیاء بنیادی‌ترین عناصر برنامه‌نویسی شی‌گرا هستند. کلاس به‌عنوان یک قالب یا مدل عمل می‌کند که شامل داده‌ها (attributes) و توابع (methods) است و رفتار اشیاء را تعریف می‌کند. یک شیء نمونه‌ای از یک کلاس است که دارای وضعیت و رفتار مشخص شده توسط کلاس است. استفاده از کلاس‌ها و اشیاء باعث سازمان‌دهی بهتر کد، قابلیت بازاستفاده و نگهداری آسان‌تر می‌شود.
کلاس‌ها اصول مهم برنامه‌نویسی شی‌گرا از جمله کپسوله‌سازی، وراثت و چندریختی را پشتیبانی می‌کنند. آنها به توسعه‌دهندگان اجازه می‌دهند تا داده‌ها و الگوریتم‌ها را به‌صورت ساختاریافته مدیریت کنند. در توسعه نرم‌افزار، کلاس‌ها برای مدل‌سازی موجودیت‌های واقعی، طراحی معماری سیستم و بهینه‌سازی عملکرد کاربرد دارند. تسلط بر کلاس‌ها و اشیاء باعث می‌شود سیستم‌هایی مقیاس‌پذیر و بهینه ایجاد شود.
در این آموزش، شما با نحوه تعریف کلاس‌ها، ایجاد اشیاء، پیاده‌سازی متدها، استفاده از الگوریتم‌ها و اعمال بهترین شیوه‌ها مانند مدیریت حافظه، استفاده از STL و بهینه‌سازی عملکرد آشنا خواهید شد. همچنین به اشتباهات رایج مانند نشت حافظه، مدیریت ناقص خطاها و استفاده ناکارآمد از الگوریتم‌ها پرداخته خواهد شد. این دانش برای توسعه برنامه‌های حرفه‌ای و مقاوم در سی‌پلاس‌پلاس ضروری است.

مثال پایه

text
TEXT Code
\#include <iostream>
\#include <string>

class Karmand {
private:
std::string name;
int id;
double salary;

public:
Karmand(const std::string& n, int i, double s) : name(n), id(i), salary(s) {}

void setName(const std::string& n) { name = n; }
void setId(int i) { id = i; }
void setSalary(double s) { salary = s; }

std::string getName() const { return name; }
int getId() const { return id; }
double getSalary() const { return salary; }

void display() const {
std::cout << "ID: " << id << "\n"
<< "Name: " << name << "\n"
<< "Salary: $" << salary << "\n";
}

};

int main() {
Karmand k1("Ali Reza", 101, 7500.50);
k1.display();

k1.setSalary(8000.75);
std::cout << "Updated Salary: $" << k1.getSalary() << "\n";

return 0;

}

در این مثال، کلاس Karmand دارای سه ویژگی خصوصی name، id و salary است که از دسترسی مستقیم محافظت می‌شوند. کپسوله‌سازی اجازه می‌دهد فقط از طریق متدهای عمومی setters و getters به داده‌ها دسترسی پیدا کنیم. سازنده کلاس شیء را هنگام ایجاد مقداردهی اولیه می‌کند و متد display اطلاعات شیء را نمایش می‌دهد. استفاده از متدهای const تضمین می‌کند که وضعیت شیء تغییر نمی‌کند، که باعث امنیت و خوانایی بالاتر کد می‌شود. این الگو در سیستم‌های واقعی مدیریت کارکنان قابل استفاده است و از نشت حافظه جلوگیری می‌کند.

مثال کاربردی

text
TEXT Code
\#include <iostream>
\#include <vector>
\#include <algorithm>

class Mahsool {
private:
std::string name;
int id;
double price;

public:
Mahsool(const std::string& n, int i, double p) : name(n), id(i), price(p) {}

void setPrice(double p) { price = p; }
double getPrice() const { return price; }
std::string getName() const { return name; }

void display() const {
std::cout << "ID: " << id << ", Name: " << name
<< ", Price: $" << price << "\n";
}

};

class Anbar {
private:
std::vector<Mahsool> products;

public:
void addProduct(const Mahsool& p) { products.push_back(p); }

void displayAll() const {
std::cout << "Inventory:\n";
for (const auto& p : products)
p.display();
}

void applyDiscount(double percent) {
for (auto& p : products) {
double discounted = p.getPrice() * (1.0 - percent / 100.0);
p.setPrice(discounted);
}
}

void sortByPrice() {
std::sort(products.begin(), products.end(),
[](const Mahsool& a, const Mahsool& b){ return a.getPrice() < b.getPrice(); });
}

};

int main() {
Anbar store;
store.addProduct(Mahsool("Laptop", 201, 1200.00));
store.addProduct(Mahsool("Phone", 202, 800.50));
store.addProduct(Mahsool("Headphones", 203, 150.75));

store.displayAll();
std::cout << "\nApplying 10% discount...\n";
store.applyDiscount(10);
store.sortByPrice();
store.displayAll();

return 0;

}

در مثال پیشرفته، کلاس Mahsool نماینده محصولات منفرد و کلاس Anbar مدیر مجموعه محصولات است. متدهای applyDiscount و sortByPrice الگوریتم‌های کاربردی بر روی اشیاء را نشان می‌دهند. استفاده از STL و Lambda عملکرد را بهینه کرده و از نشت حافظه جلوگیری می‌کند. طراحی کلاس‌ها اصول POO شامل کپسوله‌سازی، تجمیع و مسئولیت واحد را رعایت می‌کند که نگهداری و مقیاس‌پذیری سیستم را آسان می‌سازد.

بهترین شیوه‌ها در سی‌پلاس‌پلاس برای کلاس‌ها و اشیاء شامل استفاده صحیح از سازنده و مخرب، ویژگی‌های خصوصی، const-correctness، استفاده از کانتینرهای STL، لیست‌های مقداردهی اولیه و عبور اشیاء با ارجاع است. اشتباهات رایج شامل مدیریت نادرست حافظه، دسترسی مستقیم به داده‌های خصوصی، الگوریتم‌های ناکارآمد و عدم مدیریت خطاها است. RAII، smart pointers و اختصاص در پشته به مدیریت ایمن منابع کمک می‌کنند. برای بهینه‌سازی، از ارجاع‌ها و move-semantics استفاده کنید و از کپی‌های غیرضروری جلوگیری نمایید. امنیت با اعتبارسنجی ورودی‌ها و محافظت از داده‌های حساس تضمین می‌شود.

📊 جدول مرجع

سی‌پلاس‌پلاس Element/Concept Description Usage Example
Class قالبی برای ایجاد اشیاء با ویژگی‌ها و متدها class Karmand { private: std::string name; public: void setName(std::string n){name=n;} };
Object نمونه واقعی یک کلاس Karmand k1("Ali",101,7500.50);
Constructor مقداردهی اولیه شیء هنگام ایجاد آن Karmand(const std::string& n,int i,double s):name(n),id(i),salary(s){}
Destructor آزادسازی منابع هنگام نابودی شیء \~Karmand() { /* cleanup */ }
Encapsulation محافظت از داده‌ها و کنترل دسترسی private: int id; public: void setId(int i){id=i;}
Member Function متدی داخل کلاس برای دستکاری داده‌ها void display() const { std::cout<\<name; }

تسلط بر کلاس‌ها و اشیاء امکان مدل‌سازی سیستم‌های پیچیده، پیاده‌سازی الگوریتم‌های بهینه و ساخت معماری نرم‌افزار قابل نگهداری را فراهم می‌کند. نکات کلیدی شامل اهمیت کپسوله‌سازی و رفتار کنترل‌شده اشیاء است که پروژه‌هایی مقیاس‌پذیر و مقاوم ایجاد می‌کند. گام‌های بعدی توصیه شده شامل مطالعه وراثت، چندریختی و الگوهای طراحی برای توسعه برنامه‌های مدولار و کارآمد است. منابع آموزشی، مستندات سی‌پلاس‌پلاس و STL برای یادگیری پیشرفته بسیار مفید هستند.

🧠 دانش خود را بیازمایید

آماده شروع

Test Your Knowledge

Test your understanding of this topic with practical questions.

4
سوالات
🎯
70%
برای قبولی
♾️
زمان
🔄
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود