آموزش وراثت (Inheritence)
در ++C ، میتوان ویژگیها و متدها را از یک کلاس به کلاس دیگر به ارث برد. مفهوم "ارثبری" به دو دسته تقسیم میشود:
🏅 کلاس مشتقشده (فرزند) 👶- کلاسی که از کلاس دیگری ارث میبرد.
🏅 کلاس پایه (والد)👨👩👦 - کلاسی که از آن ارثبری میشود.
برای ارثبری از یک کلاس، از نماد : استفاده کنید.
در مثال زیر، کلاس Car (فرزند) ویژگیها و متدهای کلاس Vehicle (والد) را به ارث میبرد:
در ++C ، میتوان ویژگیها و متدها را از یک کلاس به کلاس دیگر به ارث برد. مفهوم "ارثبری" به دو دسته تقسیم میشود:
🏅 کلاس مشتقشده (فرزند) 👶- کلاسی که از کلاس دیگری ارث میبرد.
🏅 کلاس پایه (والد)👨👩👦 - کلاسی که از آن ارثبری میشود.
برای ارثبری از یک کلاس، از نماد : استفاده کنید.
در مثال زیر، کلاس Car (فرزند) ویژگیها و متدهای کلاس Vehicle (والد) را به ارث میبرد:
#include <iostream>
#include <string>
using namespace std;
// Base class
class Vehicle {
public:
string brand = "Ford";
void honk() {
cout << "Tuut, tuut! \n" ;
}
};
// Derived class
class Car: public Vehicle {
public:
string model = "Mustang";
};
int main() {
Car myCar;
myCar.honk();
cout << myCar.brand + " " + myCar.model;
return 0;
}
❤9
پولی مورفیسم (Polymorphism) به معنای "چند شکل" است و زمانی رخ میدهد که چند کلاس با استفاده از وراثت با هم ارتباط والد فرزندی دارند.
همانطور که در پست های قبل گفتیم؛ وراثت به ما امکان میدهد که ویژگیها و متدها را از یک کلاس دیگر به ارث ببریم.
پولی مورفیسم از این متدها استفاده میکند تا کارهای مختلفی انجام دهد. این ویژگی به ما اجازه میدهد تا یک کار را به روشهای مختلف انجام دهیم.
برای مثال، یک کلاس پایه به نام Animal را در نظر بگیرید که متدی به نام animalSound() دارد. کلاسهای مشتقشده مثل Pig، Cat، Dog و Bird میتوانند نسخههای مخصوص خود از این متد را داشته باشند (مثل اینکه صدای خوک خرخر هست و گربه میومیو و غیره):
همانطور که در پست های قبل گفتیم؛ وراثت به ما امکان میدهد که ویژگیها و متدها را از یک کلاس دیگر به ارث ببریم.
پولی مورفیسم از این متدها استفاده میکند تا کارهای مختلفی انجام دهد. این ویژگی به ما اجازه میدهد تا یک کار را به روشهای مختلف انجام دهیم.
برای مثال، یک کلاس پایه به نام Animal را در نظر بگیرید که متدی به نام animalSound() دارد. کلاسهای مشتقشده مثل Pig، Cat، Dog و Bird میتوانند نسخههای مخصوص خود از این متد را داشته باشند (مثل اینکه صدای خوک خرخر هست و گربه میومیو و غیره):
//کلاس والد
class Animal {
public:
void animalSound() {
cout << "The animal makes a sound \n";
}
};
// کلاس فرزند1
class Pig : public Animal {
public:
void animalSound() {
cout << "The pig says: wee wee \n";
}
};
// کلاس فرزند2
class Dog : public Animal {
public:
void animalSound() {
cout << "The dog says: bow wow \n";
}
};
❤7
🌟🌟🌟🌟🌟کاربرد اصلی وراثت و پولی مورفیسم :
🎯استفاده مجدد از کد: با وراثت میتوانید هنگام ایجاد یک کلاس جدید، ویژگیها و متدهای یک کلاس موجود را دوباره استفاده کنید.
🎯انعطافپذیری در اجرا: با پولی مورفیسم، میتوان یک متد را به روشهای مختلف نوشت(یک عمل را به روش های مختلف نوشت) که به برنامهنویسی شیگرا امکان میدهد تا کد تمیزتر و منسجمتری داشته باشید.
🎯استفاده مجدد از کد: با وراثت میتوانید هنگام ایجاد یک کلاس جدید، ویژگیها و متدهای یک کلاس موجود را دوباره استفاده کنید.
🎯انعطافپذیری در اجرا: با پولی مورفیسم، میتوان یک متد را به روشهای مختلف نوشت(یک عمل را به روش های مختلف نوشت) که به برنامهنویسی شیگرا امکان میدهد تا کد تمیزتر و منسجمتری داشته باشید.
❤4😍1
کار کردن با فایل ها در ++C
برای نوشتن یا خواندن فایل ها نظیر فایل های متنی (با پسوند txt.) باید از کتابخانه fstream استفاده نمایید.
داخل این کتابخانه ۳ تا کلاس وجود دارد که در تصویر نام هرکدوم از کلاس ها بهمراه کاربردشان نوشته شده است
برای استفاده از کتابخانه fstream لازم است که در ابتدای فایل کدتون iostream هم به صورت
زیر قرار دهید:
#سی_پلاس_پلاس
برای نوشتن یا خواندن فایل ها نظیر فایل های متنی (با پسوند txt.) باید از کتابخانه fstream استفاده نمایید.
داخل این کتابخانه ۳ تا کلاس وجود دارد که در تصویر نام هرکدوم از کلاس ها بهمراه کاربردشان نوشته شده است
برای استفاده از کتابخانه fstream لازم است که در ابتدای فایل کدتون iostream هم به صورت
زیر قرار دهید:
#include <iostream>
#include <fstream>
#سی_پلاس_پلاس
❤3👍1
برای ساخت یک فایل جدید از کلاس ofstream یا fstream استفاده نمایید.
ابتدا باید یک شی از نوع ofstream ایجاد کنیم که در اینجا نام شی MyFIle می باشد و پارامتر این شی نام فایل و فرمت آن است که filename.txt گذاشتیم :
برای نوشتن متن داخل این فایل از >> که بعد از نام شی می آید استفاده کرده و متن مورد نظر را تایپ نمایید :
وقتی که متون موردنظر را نوشتید باید متد ()close را فرابخوانید تا فایل بسته شود
هدف بستن فایل پاک کردن فضای اشغال شده در مموری برای نوشتن فایل می باشد که بهتر است بعد از هر عملیات روی فایل این کاررا انجام دهید.
کد کامل
ابتدا باید یک شی از نوع ofstream ایجاد کنیم که در اینجا نام شی MyFIle می باشد و پارامتر این شی نام فایل و فرمت آن است که filename.txt گذاشتیم :
ofstream MyFile("filename.txt");
برای نوشتن متن داخل این فایل از >> که بعد از نام شی می آید استفاده کرده و متن مورد نظر را تایپ نمایید :
MyFile << "salam!man matn hastam";
وقتی که متون موردنظر را نوشتید باید متد ()close را فرابخوانید تا فایل بسته شود
هدف بستن فایل پاک کردن فضای اشغال شده در مموری برای نوشتن فایل می باشد که بهتر است بعد از هر عملیات روی فایل این کاررا انجام دهید.
کد کامل
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// Create and open a text file
ofstream MyFile("filename.txt");
// Write to the file
MyFile << "salam!man matn hastam ";
// Close the file
MyFile.close();
}
❤4
خوندن فایل در ++C
برای خواندن فایل از کلاس ifstream یا fstream در کتابخانه fstream استفاده نمایید.
برای این منظور ابتدا یک شی ifstream ایجاد کرده و در پارامتر این شی نام فایلی که میخواهید بخوانید را بنویسید(در این مثال نام فایل myReadfile )
سپس از حلقه whie بهمراه تابع ()getline استفاده کرده تا متون فایل را خط به خط بخوانید پارامتر اول متغیر فایلی که در بالا ایجاد کرده اید و پارامتر دوم متغیر رشته ای که میخواهید متون فایل خط به خط در آن ذخیره شده و خوانده شود:
کد کامل :
برای خواندن فایل از کلاس ifstream یا fstream در کتابخانه fstream استفاده نمایید.
برای این منظور ابتدا یک شی ifstream ایجاد کرده و در پارامتر این شی نام فایلی که میخواهید بخوانید را بنویسید(در این مثال نام فایل myReadfile )
// ایجاد متغیر رشته myText برای خواندن متون فایل
string myText;
//ایجاد شی برای خواندن فایل
ifstream MyReadFile("filename.txt");
سپس از حلقه whie بهمراه تابع ()getline استفاده کرده تا متون فایل را خط به خط بخوانید پارامتر اول متغیر فایلی که در بالا ایجاد کرده اید و پارامتر دوم متغیر رشته ای که میخواهید متون فایل خط به خط در آن ذخیره شده و خوانده شود:
while (getline (MyReadFile, myText)) {
// Output the text from the file
cout << myText;
}
کد کامل :
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
ofstream MyWriteFile("filename.txt");
MyWriteFile << "Files can be tricky, but it is fun enough!";
MyWriteFile.close();
string myText;
ifstream MyReadFile("filename.txt");
while (getline (MyReadFile, myText)) {
cout << myText;
}
MyReadFile.close();
}
👍3❤1
آموزش Reference در ++C
یک متغیر Reference به متغیر دیگری ارجاع میدهد و با عملگر & ساخته میشود:
در مثال بالا ما یک متغیر ارجاع به نام meal درست کردیم که به متغیر رشته food ارجاع می دهد.
در هر دو حالت میتوانیم از نام متغیر food یا نام ارجاع meal استفاده کنیم تا به متغیر food دسترسی پیدا کنیم:
در مثال بالا خروجی هر ۲ متغیر pizza هست
یک متغیر Reference به متغیر دیگری ارجاع میدهد و با عملگر & ساخته میشود:
string food = "Pizza";
string &meal = food;
در مثال بالا ما یک متغیر ارجاع به نام meal درست کردیم که به متغیر رشته food ارجاع می دهد.
در هر دو حالت میتوانیم از نام متغیر food یا نام ارجاع meal استفاده کنیم تا به متغیر food دسترسی پیدا کنیم:
string food = "Pizza";
string &meal = food;
cout << food << "\n";
cout << meal << "\n";
در مثال بالا خروجی هر ۲ متغیر pizza هست
❤4🔥1
آدرس حافظه در++C
همانطور که در پست قبلی مشاهده فرمودید،
از عملگر & برای ایجاد یک متغیر reference استفاده کردیم.
اما این عملگر همچنین میتواند برای دریافت آدرس متغیر در حافظه یا مموری کامپیوتر استفاده شود؛
وقتی در ++C یک متغیر ایجاد میشود، یک آدرس حافظه به آن اختصاص مییابد. و زمانی که به متغیر مقداری میدهیم، آن مقدار در این آدرس حافظه ذخیره میشود.
برای دسترسی به آدرس حافظه، از عملگر & استفاده کنید و نتیجه نشان میدهد که متغیر کجا ذخیره شده است:
در مثال بالا خروجی متغیر یک آدرس حافظه را نشان می دهد که به فرمت مشابه
0x6dfed4
می باشد
#سی_پلاس_پلاس
#برنامه_نویسی
همانطور که در پست قبلی مشاهده فرمودید،
از عملگر & برای ایجاد یک متغیر reference استفاده کردیم.
اما این عملگر همچنین میتواند برای دریافت آدرس متغیر در حافظه یا مموری کامپیوتر استفاده شود؛
وقتی در ++C یک متغیر ایجاد میشود، یک آدرس حافظه به آن اختصاص مییابد. و زمانی که به متغیر مقداری میدهیم، آن مقدار در این آدرس حافظه ذخیره میشود.
برای دسترسی به آدرس حافظه، از عملگر & استفاده کنید و نتیجه نشان میدهد که متغیر کجا ذخیره شده است:
string food = "Pizza";
cout << &food;
در مثال بالا خروجی متغیر یک آدرس حافظه را نشان می دهد که به فرمت مشابه
0x6dfed4
می باشد
#سی_پلاس_پلاس
#برنامه_نویسی
👍4❤1🔥1
چرا دانستن آدرس حافظه متغیرها مفید هست؟
قابلیت های pointer و reference در ++C این امکان را به ما می دهند که داده ها را در حافظه مدیریت کرده و باعث افزایش کارایی برنامه شود
این دو قابلیت ++C را از سایر زبان های برنامه نویسی مثل Python و Java متمایز می کند
در پست های بعدی pointer را توضیح خواهیم داد
#سی_پلاس_پلاس
قابلیت های pointer و reference در ++C این امکان را به ما می دهند که داده ها را در حافظه مدیریت کرده و باعث افزایش کارایی برنامه شود
این دو قابلیت ++C را از سایر زبان های برنامه نویسی مثل Python و Java متمایز می کند
در پست های بعدی pointer را توضیح خواهیم داد
#سی_پلاس_پلاس
👍3❤2❤🔥1🔥1
آموزش Pointer ها💡💡
در پست های قبلی یاد گرفتید که میتوانیم با استفاده از عملگر & به آدرس حافظه یک متغیر دسترسی پیدا کنیم.
اما Pointer یک متغیر است که آدرس حافظه متغیر دیگری را در خود به عنوان مقدار ذخیره میکند.
یک متغیر pointer به یک نوع داده (مثل int یا string) از همان نوع اشاره میکند و با عملگر * ساخته میشود. آدرس متغیری که با آن کار میکنید به pointer اختصاص داده میشود:
در مثال زیر ما یک متغیر رشته ای به نام food درست کردیم و میخواهیم مقدار آدرس حافظه آن را در متغیر دیگر ذخیره کنیم :
برای این منظور یک pointer از نوع رشته به نام ptr تعریف کرده و آدرس حافظه متغیر food را به آن اختصاص می دهیم:
پس از خروجی گرفتن از food، food& و ptr متوجه خواهیم شد که مقدار food& و ptr یکسان خواهند بود چون هردو آدرس متغیر food در حافظه را نمایش می دهند.
کد کامل
در پست های قبلی یاد گرفتید که میتوانیم با استفاده از عملگر & به آدرس حافظه یک متغیر دسترسی پیدا کنیم.
اما Pointer یک متغیر است که آدرس حافظه متغیر دیگری را در خود به عنوان مقدار ذخیره میکند.
یک متغیر pointer به یک نوع داده (مثل int یا string) از همان نوع اشاره میکند و با عملگر * ساخته میشود. آدرس متغیری که با آن کار میکنید به pointer اختصاص داده میشود:
در مثال زیر ما یک متغیر رشته ای به نام food درست کردیم و میخواهیم مقدار آدرس حافظه آن را در متغیر دیگر ذخیره کنیم :
string food = "Pizza";
برای این منظور یک pointer از نوع رشته به نام ptr تعریف کرده و آدرس حافظه متغیر food را به آن اختصاص می دهیم:
string* ptr = &food;
پس از خروجی گرفتن از food، food& و ptr متوجه خواهیم شد که مقدار food& و ptr یکسان خواهند بود چون هردو آدرس متغیر food در حافظه را نمایش می دهند.
cout << food << "\n";
cout << &food << "\n";
cout << ptr << "\n";
کد کامل
#include <iostream>
#include <string>
using namespace std;
int main() {
string food = "Pizza"; // A string variable
string* ptr = &food; // A pointer variable that stores the address of food
// Output the value of food
cout << food << "\n";
// Output the memory address of food
cout << &food << "\n";
// Output the memory address of food with the pointer
cout << ptr << "\n";
return 0;
}
❤11👍1
نکته درباره pointer ها
سه روش برای اعلان متغیرهای pointer وجود دارد، اما روش اول توصیه میشود:
سه روش برای اعلان متغیرهای pointer وجود دارد، اما روش اول توصیه میشود:
string* mystring; // روش توصیهشده
string *mystring;
string * mystring;
❤9❤🔥1
آموزش رایگان ++C از صفر
آموزش Pointer ها💡💡 در پست های قبلی یاد گرفتید که میتوانیم با استفاده از عملگر & به آدرس حافظه یک متغیر دسترسی پیدا کنیم. اما Pointer یک متغیر است که آدرس حافظه متغیر دیگری را در خود به عنوان مقدار ذخیره میکند. یک متغیر pointer به یک نوع داده (مثل int…
دوستان عزیز این پستو برسونید به ۱۰ تا قلب میخواهیم ازpointer ها کوییز بذاریم براتون که خودتونو محک بزنید مباحثو چقدر یاد گرفتید😊😊
🌷
🌷
👍7
یک متغیر pointer چه کاری می کند؟
Anonymous Quiz
16%
ذخیره مقدار یک متغیر
71%
ذخیره آدرس حافظه یک متغیر
7%
نوع داده یک متغیر
6%
اندازه متغیر بر حسب بایت
❤3❤🔥1🤗1
🔴🔴🔴🔴مدیریت استثناها (Exceptions)
در++C
موقع اجرای کدهای ++C ممکنست به خطاهای مختلفی برخورد کنید مانند :
خطاهای کدنویسی توسط برنامهنویس، خطاهای ناشی از ورودی نادرست، یا سایر اتفاقات غیر قابل پیش بینی دیگر
زمانی که به این خطاها یا استثناها بر میخوریم برنامه ++C ما متوقف شده و پیام خطا را نمایش می دهد
واژه فنی این وضعیت پرتاب کردن استثنا ( throw exception)
می باشد
در++C
موقع اجرای کدهای ++C ممکنست به خطاهای مختلفی برخورد کنید مانند :
خطاهای کدنویسی توسط برنامهنویس، خطاهای ناشی از ورودی نادرست، یا سایر اتفاقات غیر قابل پیش بینی دیگر
زمانی که به این خطاها یا استثناها بر میخوریم برنامه ++C ما متوقف شده و پیام خطا را نمایش می دهد
واژه فنی این وضعیت پرتاب کردن استثنا ( throw exception)
می باشد
❤7
مدیریت استثنا در ++C با سه کلمه کلیدی زیر
try, throw,catch
انجام می شود که فرمت آن برای تعریف در کد به صورت زیر است :
🍁عبارت try به شما این امکان را می دهد که بخشی از کد که داخل آن قرار دارد برای خطا آزمایش شود
🍁دستور throw زمانی که کد داخل try خطا داشته باشد، یک استثنا اصطلاحا پرتاب می کندکه باعث می شود برنامه از کار نیفتد
🍁در بلاک catch دستوری نوشته می شود که فقط موقع بروز خطا در کد try اجرا می شود مثلا یک نوشته به کاربر در خروجی نشان می دهد که خطا رخ داده است.
در ادامه یک برنامه مثال خواهیم زد که کاربردشو بهتر درک کنید.
try, throw,catch
انجام می شود که فرمت آن برای تعریف در کد به صورت زیر است :
try {
throw exception;
}
catch () {
}
🍁عبارت try به شما این امکان را می دهد که بخشی از کد که داخل آن قرار دارد برای خطا آزمایش شود
🍁دستور throw زمانی که کد داخل try خطا داشته باشد، یک استثنا اصطلاحا پرتاب می کندکه باعث می شود برنامه از کار نیفتد
🍁در بلاک catch دستوری نوشته می شود که فقط موقع بروز خطا در کد try اجرا می شود مثلا یک نوشته به کاربر در خروجی نشان می دهد که خطا رخ داده است.
در ادامه یک برنامه مثال خواهیم زد که کاربردشو بهتر درک کنید.
❤7
توضیح مثال : در این مثال ما از بلاک try catch در صورت صحیح نبودن شرط استفاده کردیم :
بلاک try ما ابتدا یک متغیر عدد صحیح به نام age تغریف کردیم که مقدارش 15 هستش،
بعد یک شرط if تعریف کردیم که اگر مقدار age بزرگتر یا مساوی 18 باشد، متن زیر در خروجی نشان داده شود :
"
سن شما بالای هجده سال است پس حق دسترسی دارید
"
و اگر مقدار age کمتر از 18 باشه، برای متغیر age اکسپشن پرتاب می کند.
حالا باید در بلاک catch باید دستوری که موقع پرتاب استثنا می خواهیم اجرا شود را بنویسیم ( در اینجا استثنا زمانی پرتاب می شود که مقدار int از 18 کمتر باشد طبق دستور شرط بالا، پس کد داخل catch هم وقتی که مقدار age از 18 کمتر باشد اجرا خواهد که)
این دستور به کاربر پیام زیر را به همراه مقدار سن نشان می دهد
در این مثال چون age مقدارش 15 هست پس استثنا پرتاب شده و کد داخل بلاک catch اجرا خواهد شد.
بلاک try ما ابتدا یک متغیر عدد صحیح به نام age تغریف کردیم که مقدارش 15 هستش،
try {
int age = 15;
بعد یک شرط if تعریف کردیم که اگر مقدار age بزرگتر یا مساوی 18 باشد، متن زیر در خروجی نشان داده شود :
"
سن شما بالای هجده سال است پس حق دسترسی دارید
"
و اگر مقدار age کمتر از 18 باشه، برای متغیر age اکسپشن پرتاب می کند.
if (age >= 18) {
cout << "سن شما بالای هجده سال است پس حق دسترسی دارید";
} else {
throw (age);
}
}
حالا باید در بلاک catch باید دستوری که موقع پرتاب استثنا می خواهیم اجرا شود را بنویسیم ( در اینجا استثنا زمانی پرتاب می شود که مقدار int از 18 کمتر باشد طبق دستور شرط بالا، پس کد داخل catch هم وقتی که مقدار age از 18 کمتر باشد اجرا خواهد که)
این دستور به کاربر پیام زیر را به همراه مقدار سن نشان می دهد
catch (int myNum) {
cout << "چون سن شما زیر هیجده ساله حق دسترسی ندارید";
cout << "سن شما : " << myNum;
}
در این مثال چون age مقدارش 15 هست پس استثنا پرتاب شده و کد داخل بلاک catch اجرا خواهد شد.
❤4
سورس کد سیستم مدیریت حساب بانکی به سبک کاملا شی گرا در ++C
#include <iostream>
using namespace std;
class BankAccount {
private:
string accountNumber;
string holderName;
double balance;
public:
BankAccount(string accNum, string name, double bal = 0.0)
: accountNumber(accNum), holderName(name), balance(bal) {}
void deposit(double amount) {
balance += amount;
cout << "Meghdare varizi " << amount << ". Mojudi" << balance << endl;
}
void withdraw(double amount) {
if (amount <= balance) {
balance -= amount;
cout << "bardasht " << amount << ". mojudi: " << balance << endl;
} else {
cout << "Insufficient funds." << endl;
}
}
};
int main() {
BankAccount account("123456789", "Ali Ahmadi");
account.deposit(1000);
account.withdraw(200);
return 0;
}
❤15🥰1😍1
آموزش رایگان ++C از صفر
سورس کد سیستم مدیریت حساب بانکی به سبک کاملا شی گرا در ++C #include <iostream> using namespace std; class BankAccount { private: string accountNumber; string holderName; double balance; public: BankAccount(string accNum, string name, double…
برسه ده تا ری اکشن پی دی اف توضیحشم تقدیمتون میکنم
❤14❤🔥2
آموزش رایگان ++C از صفر
پی_دی_اف_توضیح_کلاس_سیستم_حساب_بانکی_20241109_175326_0000.pdf
ده تا ری اکشن هم یادتون نره دوستان عزیز🌷🌷🌷❤️❤️❤️❤️
❤8❤🔥2