programiranje2 vezbi klasi objekti

Post on 25-Oct-2015

98 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

Programiranje vezbi PPT

TRANSCRIPT

ПРОГРАМИРАЊЕ 2: ВЕЖБИ КЛАСИИОБЈЕКТИ

Асистент: Невена Ристова

Класи во C++ Класата e основeн концепт на објектно-

ориентираното програмирање и основната единица на енкапсулација во С++.

Класа е множество на објекти кои делат(поседуваат) заедничко однесување и структура.

Објектите се инстанци (појави) на дадени класи. Објектите поседуваат две карактеристики:

атрибути(податоци) однесување-својства(функции и методи).

Програмирање 2 - Вежби

Класи во C++

Класите се дефинираат со клучниот збор class. Синтаксата на класната декларација е слична на онаа кај структурите.

class име_на_класа{private: //опционално

приватни променливи и методиpublic: јавни променливи и методи} ;

Програмирање 2 - Вежби

Атрибути и методи Атрибутите и методите кои се наоѓаат внатре во

класата се нарекуваат членови на класата. Членовите на класата, доколку не е поинаку

специфицирано, се приватни. За да членовите бидат јавни и со тоа достапни и

од надвор од класата, тогаш треба пред нивното декларирање да стои клучниот збор public:

Јавните членови се достапни како за другите членови на класата, така и од било кој друг дел од програмот.

Програмирање 2 - Вежби

Пример за декларација на класа

class primer_klasa{//приватни членовиint a;public: //јавни членовиvoid set_a(int num);int get_a();

};Функциите кои се декларирани како членови на некоја класа се викаат функции членови или методи.

Програмирање 2 - Вежби

Дефинирање на методи Иако метдите set_a(int num) и get_a() се

декларирани, тие се уште не се дефинирани Методите мора да се декларирани внатре во

класата, со нивните дефиниции направени надвор од калсата.

За да се дефинира метод, мора да се поврзе името на методот со името на класата преку операторот за дофат (scope resolution operator) ::

тип_на_метод име_класа::име_функција(листа_параметри) {//тело_на_методот}

Програмирање 2 - Вежби

Дефинирање на методи

void primer_klasa::set_a(int num) {a=num;

}

int primer_klasa::get_a() {return a;

}

set_a() и get_a() имаат пристап до променливата а, која е приватна променлива (атрибут) на primer_klasa.

Програмирање 2 - Вежби

Дефинирање на методи Методите set_a() и get_a() имаат посебна улога

на посредник (interface) за пристап до приватната променливата а.

До неа немаат пристап функции и објекти надвор од класата primer_klasa.

До променливата а може да се пристапи само преку користење на set_a() и get_a(), кои се јавни (public) методи.

На тој начин се реализира принципот на енкапсулација

Програмирање 2 - Вежби

Декларирање на објекти primer_klasa ob1, ob2; Декларацијата на класата е логичка апстракција

која дефинира нов тип на податоци (ADT). Декларацијата на објекти креира објекти од

даден тип (класа). Дефинирањето на објектите се извршува во тело

на метод, кој може да биде надворешен (на пр. main) или метод во рамки на друга класа.

Програмирање 2 - Вежби

Декларирање на објекти По креирање на објект од некоја класа, може да

се пристапува до неговите јавни членови (атрибути и методи), слично како што се пристапува до елементи на структура.

Пример: повикување на set_a() и get_a() за објектите ob1, ob2:

ob1.set_a(10);ob2.set_a(99);cout << ob1.get_a() << endl;cout << ob2.get_a() << endl;

Излез (output): 10 и 99.

Програмирање 2 - Вежби

Пример код со грешка

main(){

primer_klasa ob1, ob2;ob1.a=10; //грешка: директен пристап кон приватен

член ob2.a=99; //грешка: директен пристап кон приватен член //пристап кон јавни членови cout << ob1.get_a() << ”\n”;cout << ob2.get_a() << ”\n”;

}

Програмирање 2 - Вежби

Корегиран код

main(){

primer_klasa ob1, ob2;ob1.set_a(10); //пристап кон јавен метод ob2.set_a(99); //пристап кон јавен метод //пристап кон јавни членови cout << ob1.get_a() << ”\n”;cout << ob2.get_a() << ”\n”;

}

Програмирање 2 - Вежби

Целосен пример#include <iostream>

using namespace std;

class primer_klasa

{

int a; //private

public:

void set_a(int num);

int get_a();

};

void primer_klasa ::set_a(int num)

{

a=num;

}

int primer_klasa::get_a()

{

return a;

}

Програмирање 2 - Вежби

main(){

primer_klasa ob1, ob2;

ob1.set_a(10);ob2.set_a(99);

cout << ob1.get_a() << ”\n”;cout << ob2.get_a() << ”\n”;

}

Објекти

Кодот надвор од класата пристапува до приватните членови само преку јавните членови на класата, поврзувајки го името на објектот со името на методот кој го повикуваат (пр. ob1.set_a(10);)

Секој креиран објект од одредена класа има своја сопствена копија од секоја променлива член.

Програмирање 2 - Вежби

Јавни променливи членови на класа Една класа може да има и членови јавни променливиclass primer_klasa

{//а е јавна променлива

public:

int a;//нема потреба од методи за пристап на а (public)

};

main(){

primer_klasa ob1, ob2;

ob1.a=10; //на а се пристапува директно

ob2.a=99; //бидејќи е јавна променлива

cout << ob1.a << ”\n”;

cout << ob2.a << ”\n”;

}

Се нарушува принципот на енкапсулација!Програмирање 2 - Вежби

Inline дефинирање на методиclass Pixel {

private:

int x, y;

public: //inline дефинирани методи

int getx() {

return x;

}

int gety() {

return y;

}

void set (){

cout << ”x=”; cin >> x;

cout << ”y=”; cin >> y;

}

void draw_pixel() {

cout << ”(x,y)=” << x << ”,” << y; << endl;

}

};

Програмирање 2 - Вежби

Дефинирање на методи Сите inline дефинирани членки методи на класата Pixel

на следниот начин би се дефинирале посебно (претходно треба да имаат соодветни декларации во класата):

int Pixel :: getx() {

return x;

}

int Pixel :: gety() {

return y;

}

void Pixel :: set() {

cout << ”x=”; cin >> x;

cout << ”y=”; cin >> y;

}

void Pixel :: draw_pixel(){

cout << ”(x,y)=” << x << ”,” << y; << endl;

}

Програмирање 2 - Вежби

top related