Главная страница
Навигация по странице:

  • Инкапсуляция

  • Полиморфизм

  • Курсовая работа. Сабатын таырыбы


    Скачать 44 Kb.
    НазваниеСабатын таырыбы
    АнкорКурсовая работа
    Дата13.06.2022
    Размер44 Kb.
    Формат файлаdoc
    Имя файла0015808b-d23a9fdf (1).doc
    ТипПрограмма
    #588978

    Сабақтын тақырыбы : Объектілі-бағытты бағдарламалауға кіріспе
    Объектілі бағытталған программалау – программаны объектілер жиыны (әрқайсысы белгілі бір класты жүзеге асырады, ал кластар мұрагерлік принциптерге негізделген иерархияны түзеді) түрінде көрсетуге негізделген программалау әдістемелігі. Объектілер өз кезегінде өз асиеттерінің және олардың мәндерінің жиынтығы ретінде сипатталады. ОБП-ның негізгі түсініктері жоғарыда айтып кеткендей:

    – мұрагерлік (Interitance);

    – инкапсуляция (Encapsulation);

    – олиморфизм (Polymorphism);

    Объект үш бөлімнен тұрады:

    – объект аты;

    – күйі (күйлер айнымалылары);

    – әдістер (операциялар).

    Осыған сәйкес мынадай жалпылама анықтама беруге болады: ОБП объектісі – бұл күйлер (айнымалылар) және олармен байланысты әдістер (операциялар) жиынтығы. Әдістер – объектінің қоршаған ортамен өзара әрекеттесуін анықтайды. Объект әдістері – баяндалуы әрекет орындайтын объектілер баяндалуында қамтылған процедуралар мен функциялар. Әдістер жиынтығын объект интерфейсі деп те атайды.

    Инкапсуляция – деректерді және осы деректермен жұмыс әдістерін біріктіретін механизм, екеуін де сырттан килігуден немесе дұрыс емес қолданудан қорғайды. Әдістер мен деректер осындай тәсілмен біріктірілсе, обьект құрылады.

    Инкапсуляцияны қолдана отырып, обьектіге тәуелді деректерді мүмкін болатын қателерден (осы деректерге тура қатынас құру кезінде пайда болатын) қорғаймыз. Сонымен қатар, көрсетілген принципті қолдану программа кодында мүмкін болатын қателерді окализациялауға көмектеседі. Ал бұл өз кезегінде осы қателерді іздеп, түзету процесін едәуір жеңілдетеді. Былай да айтуға болады; инкапсуляция деректерді жасыруды (осы деректерді қорғауға мүмкіндік береді) қамтамасыз етеді. Дегенмен инкапсуляцияны қолдану обьект элементтеріне қатынас құру тиімділігін төмендетеді. Бұл обьектінің ішкі элементтерін (айнымалыларды) өзгерту үшін

    әдістерді шақыру қажеттілігімен байланысты. Есептеу техникасы дамуының қазіргі деңгейінде тиімділіктегі мұндай шығын елеулі рөл атқарады деуге келмейді.

    Мұрагерлік – бір обьект басқа обьектінің қасиеттерін иемдене алатын және өзіне тән жақтарын қосып алатын процесс. Нәтижесінде обьектілік типтер иерархиясы құрылады, онда «түпкі» деректер мен әдістер өрісі автоматты түрде «туынды» деректер мен әдістерінің өрістері болып табылады. Мұрагерліктің мәні мен әмбебаптығы мынада, әр жолы жаңа обьектіні (басынан бастап) баяндап отырудың қажеті жоқ, тек «базалық» класты көрсетіп, жаңа кластың ерекше жақтарын сипаттаса жеткілікті. Нәтижесінде жаңа обьект базалық кластың барлық қасиеттерін және соған қосып өзінің ерекше қасиеттерін қамтитын болады.

    Полиморфизм – бір ғана атты бірнеше техникалық жағынан әртүрлі тапсырмаларды шешу үшін қолдануға мүмкіндік беретін қасиет. Бір атқа ие әдіс түрлі тумалас обьектілерге қолданыла

    алады. Жалпы полиморфизм концепциясы «бір интерфейс – көп әдіс» идеясы болып табылады.

    Полиморфизмнің артықшылығы мынада, әрекеттердің біртұтас (единый) класы үшін бір интерфейсті қолдануға мүмкіндік бере отырып, программаның күрделілігін төмендетуге жағдай жасайды. Қалыптасқан жағдайға байланысты нақты әрекетті таңдау компилятордың мойнында.

    Есеп

    // Программада төртбұрыштардың бастапқы класы,

    //және параллелограм, ромб, квадраттардың мұрагер-

    кластары баяндалған.

    #include

    #include

    // төртбұрыштардың базалық класын баяндау

    сlass FourAngle

    { protected:

    double x1, y1, x2, y2, x3, y3, x4, y4,

    A, B, C, D, D1, D2,

    Alpha, Betta, Gamma, Delta,

    P, S;

    public:

    void Init (void);

    void Storony (void);

    void Diagonali (void);

    void Angles (void);

    void Perimetr (void);

    void Ploshad (void);

    void PrintElements (void);

    };

    //Төртбұрыштардың параллелограм-мұрагері класын

    баяндау

    class Parall: public FourAngle

    { public:

    void Storony (void);

    void Perimetr (void);

    void Ploshad (void);

    };

    // Параллелограмның ромб- мұрагері класын баяндау

    class Romb: public Parall

    { public:

    void Storony (void);

    void Perimetr (void);

    };

    // Ромб мұрагері- квадраттар класын баяндау

    class Kvadrat: public Romb

    { public:

    void Anglеs (void);

    void Ploshad (void);

    };

    // кластар мүшелері – функцияларын баяндау

    void FourAngle: : Init (void)

    { cout <<”\n, Төбелер координаталарын енгізіңіз: \n”;

    cin >>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;

    }

    void FourAngle: : Storony(void)

    { A=sqrt ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));

    B= sqrt ((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));

    C= sqrt ((x4-x3)*(x4-x3)+(y4-y3)*(y4-y3));

    D= sqrt ((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1));

    }

    void FourAngle: : Diagonali (void)

    { D1=sqrt ((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));

    D2=sqrt ((x2-x4)*(x2-x4)+(y2-y4)*(y2-y4));

    }

    // Ugol функциясы қандай да бір кластың

    // мүшесі болып табылмайды

    // Ол Anglеs функциясы үшін қосымша рөл атқарады.

    // Бұл функция негізгі программада қабырғалар

    // ұзындығымен берілген үшбұрыш бұрыштарын анықтау

    // үшін тәуелсіз түрде қолданыла алады.

    double Ugol (double Aa, double Bb, double Cc)

    { double VspCos, VspSin, Pi;

    Pi= 4*atan (1.0);

    VspCos= (Aa*Aa+Bb*Bb-Cc*Cc) /2 /Aa/Bb;

    VspSin= sqrt (1-VspCos*VspCos);

    if (abs (VspCos)>1e-7)

    return (atan (VspSin/VspCos)+Pi*(VspCos<0)) / Pi /180;

    else

    return 90.0;

    }

    void FourAngle: : Anglеs (void)

    { Alpha=Ugol (D, A, D2);

    Beta= Ugol(A, B, D1);

    Gamma = Ugol (B, C, D2);

    Delta= Ugol (C, D, D1);

    }

    void FourAngle: : Perimetr (void)

    { P=A+B+C+D; }

    void FourAngle: : Ploshad (void)

    { double Per1, Per2;

    Per1= (A+D+D2) /2;

    Per2= (B+C+D1) /2;

    S=sqrt (Per1*(Per1-A)*(Per1-D)*(Per1-D2))+

    sqrt (Per2*(Per2-B)*(Per2-C)*(Per2-D1));

    }

    void FourAngle: : PrintElements (void)

    { cout <<”қабырғалары:\n”<
    “<
    cout <<”бұрыштары:\n”

    <
    “<
    cout <<”периметр:\n”<

    cout <<”ауданы: \n” <
    cout <<”диагональдары:\n”<
    }

    void Parall: : Storony(void)

    { A=sqrt ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));

    B= sqrt ((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));

    C=A; D=B;

    }

    void Parall: : Perimetr (void)

    { P=2*(A+B); }

    void Parall: : Ploshad (void)

    { double Per;

    Per= (A+D+D2)/2;

    S=2*sqrt(Per*(Per-A)*(Per-D)*(Per-D2));

    }

    void Romb : Storony(void)

    { A=B=C=D=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); }

    void Romb :: Perimetr (void)

    { P=4*A; }

    void Kvadrat: : Angles (void)

    { Alpha=Beta=Gamma=Delta=90.0; }

    void Kvadrat :: Ploshad (void)

    { S=A*A; }

    // Негізгі функция. Квадрат төбелерінің координаталары

    // бойынша оның барлық параметрлерін есептеп,

    // шығарып береді

    void main (viod)

    { Kvadrat obj; // «квадрат» класы объектісін баяндау

    obj. Init ();

    obj. Storony ();

    obj. Diagonali ();

    obj. Angles ();

    obj. Perimetr ();

    obj. Ploshad ();

    obj. PrintElements ();

    }

    Оқытушы ______________ Қалымжанова А.Б.


    написать администратору сайта