۹ مطلب با کلمه‌ی کلیدی «inheritance» ثبت شده است

استفاده از توابع سازنده ی کلاس پایه

سلام!

این جلسه می خواهیم به طرز عمل کرد توابع سازنده (costructor) در کلاس های پایه و وارث بپردازیم.

به تابع سازنده ی کلاس Student در برنامه ی زیر دقّت کنید. در این تابع با کمک لیست مقداردهی تابع سازنده ی کلاس پایه (Adam) را صدا زدیم.

#include <string>

using namespace std;

class Adam{
    protected:
        string _name;
        int _age;
        double _height;
    public:
        
        Adam( string name = "", int age = 0, double height = 0 ) : _name(name), _age(age), _height(height) {}

        string name();
        int age();
        double height();

        void setName( string );
        void setAge( int );
        void setHeight( double );

};

string Adam::name(){
    return this->_name;
}

int Adam::age(){
    return this->_age;
}

double Adam::height(){
    return this->_height;
}

void Adam::setName( string name ){
    this->_name = name;
}

void Adam::setAge( int age ){
    this->_age = age;
}

void Adam::setHeight( double height ){
    this->_height = height;
}

class Student : public Adam{
    private:
        int _id;
    public:
        
        Student( string = "", int = 0, double = 0, int = 0 );

        int id();

        void setID( int );

};

Student::Student( string name, int age, double height, int id ) : Adam( name, age, height) , _id( id ){}

int Student::id(){
    return this->_id;
}

void Student::setID( int id ){
    this->_id = id;
}

int main(){
    Student std( "John Smith", 20, 180, 174 );
    return 0;
}

یک راه دیگر برای مقدار دهی عضوهای کلاس پایه را می توانید در کد زیر مشاهده کنید.

Student::Student( string name, int age, double height, int id ) : _id( id ){
this->setName( name );
this->setAge( age );
this->setHeight( height );
}

توجّه! شما نمی توانید به عضوهای کلاس پایه از طریق لیست مقداردهی، مقدار دهید. در واقع مثال زیر غلط است:

Student::Student( string name, int age, double height, int id ) : _name( name ), _age( age), _height( height ), _id( id ) {}
۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

ارث بری در کلاس ها (inheritance)

سلام!

این جلسه می خواهیم وارد مبحث خیلی مهم (خیلی مهم) و جدیدی در برنامه نویسی شی گرا شویم. این مبحث، ارث بری نامیده می شود.

فرض کنید می خواهید برنامه ای بنویسید که قرار است در آن از شکل های هندسی (مثل مربّع، مستطیل و...) استفاده کنید. تمام شکل های هندسی در یک چیز مشترکند؛ در شکل بودن. هم مربّع یک شکل است، هم مستطیل یک شکل است و هم تمام شکل های دیگر.

حالا باید با دو مفهوم Base class (کلاس پایه) و Derived class (کلاس مشتق شده) آشنا شوید. به کلاسی مانند کلاس Shape (در مثال بالا) یک کلاس پایه یا Base class می گویند. به کلاس های مربّع، مستطیل و... کلاس های وارث، مشتق شده یا Derived class می گویند.

۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی