23
ОБЈЕКТНО ОРИЕНТИРАНО ПРОГРАМИРАЊЕ Предавања, 1 час

programiranje vo c++

Tags:

Embed Size (px)

DESCRIPTION

1va lekcija

Citation preview

Page 1: programiranje vo c++

ОБЈЕКТНО ОРИЕНТИРАНО

ПРОГРАМИРАЊЕ

Предавања, 1 час

Page 2: programiranje vo c++

Објектно Ориентирано

Програмирање

Предавач: Александар Димовски([email protected])

Асистент: Рубен Нуредини

Содржина на курсот:

Предавање: Објектно-оринетиранопрограмирање во програмски јазик C++

Вежби: Програмирање во C++

Page 3: programiranje vo c++

Цел

� Целта на предметот е да ги запознае

студентите со основните концепти на

Објектно Орентираното

Програмирање (ООП) прекуизучување на програмскиот јазик

C++.

Page 4: programiranje vo c++

Оценување

� Поени

� Оцени

10104040

ПрисуствоСеминарскаВтор

Колок.Прв

Колок.

90-10010

80-909

70-808

60-707

51-606

Page 5: programiranje vo c++

Литература

� Слајдови. (www.fon.edu.mk)

� B. Eckel, Thinking in C++, 2nd Edition, 2000. (www.BruceEckel.com)

� Teach Yourself C++ in 21 Days, Second Edition.

Page 6: programiranje vo c++

Вовед

� Што е програмирање?

� Програмски парадигми

� Процедурално програмирање - основенелемент е процедурата (функцијата) иразмислувањето започнува од неа (C).

� Објектно ориентирано програмирање -програмите се добиваат со комбинирање

на објекти (C++).

Page 7: programiranje vo c++

Објектно ориентирано

програмирање

� Проблемот се гледа како интеракција наобјекти (не процедура).

� Основни елементи во објектно-ориентираното програмирање� Класи

� Објекти

� Атрибути (својства) на објекти� Методи на објекти

� Конструирање (инстанцирање) на објекти� Уништување на објекти

� Праќање порака на објект

Page 8: programiranje vo c++

Што е објектно-ориентиранопрограмирање?

� ООП претставува развивање на апликација

од делови наречени објекти преку

дефинирање на овие делови и релациите

помеѓу нив.

� Објектите кај ООП најчесто блиску

кореспондираат со елементите од реалниот

свет на проблемот кој се решава. Една одпричините за успехот на ООП е и фактот

што тоа кореспондира со нашата претстава

(перцепција) за реалниот свет.

Page 9: programiranje vo c++

Што е објект?

� Објект може да биде било кој елемент кој се јавуваво реалниот проблем, почнувајќи од дрво, сенка, сијалица, градба, па до апстрактен концепт илимисла.

� Елементите од реалниот свет во основа имаат 2 карактеристики:� атрибути (или својства)

� однесувања (или акции)

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

� Атрибути на објектот Велосипед се тркала, број на брзини, а однесувања би биле забрзување, кочење, промена набрзина, итн.

Page 10: programiranje vo c++

Објект во ООП

� Објектите во ООП се моделерани споределементите од реалниот свет, па така, поседуваат 2 карактеристики: атрибути иоднесувања.

� Атрибутите на еден објект се претставенипреку променливи, и тие ја одредуваатсостојбата на објектот во даден момент.

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

Page 11: programiranje vo c++

Карактеристики на ООП

� Чисто Објектно Ориентирано Програмирање

ги има следните карактеристики:

� Се е објект.

� Програм е множество од објекти кои кажуваат

еден на друг што да прават преку праќање на

пораки.

� Секој објект има своја сопствена меморија

составена од други објекти.

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

� Сите објекти од даден тип можат да примат исти

пораки.

Page 12: programiranje vo c++

Интерфејс на објекти

� Креирање на апстрактни податочни типовинаречени класи, е важен концепт во ООП.

� Може да се креираат променливи, наречениобјекти, од тип класа, и да се манипулира со тиеобјекти преку праќање на пораки или барања донив.

� Пораките (барања) кои можат да се пратат доеден објект го дефинираат неговиот интерфејс.

� Една класа содржи функција асоцирана со секојаможна порака, т.ш. кога една порака е пратенадо некој објект, тогаш соодветната функција еповикана.

Page 13: programiranje vo c++

Пример: Интерфејс наобјекти

� Претставување на сијалица:

� Име на класта е Sijalica, име на креираниотобјект е lt, и пораки кои можат да сепратат до овој објект се: тој да се вклучи, исклучи, осветли, или затемни.

on()

off()

osvetli()

zatemni()

SijalicaSijalica lt;

lt.on();

Page 14: programiranje vo c++

Криење на имплементација

� Типови на програмери:� креатори на класи, кои креираат нови податочни типови.� клиент програмери, кои ги користат податочните типови вонивните програми.

� Целта на креаторите на класи е да изградат класикои ги покажуваат само оние неопходни делови наклиент програмерите (интерфејсот), додека сетоостанато е скриено.

� Криењето на имплементацијата е со цел:� Ги намалува грешките, бидејќи неинформираните клиентпрограмери не можат да допрат до внатрешните делови накласата.

� Овозможува креаторите на класите да ја променатвнатрешноста на класата за да ја направат поефикасна, без притоа да направат проблеми на клиент програмерите.

Page 15: programiranje vo c++

Наследување

� Наследување е процес во кој

еден објект ги добива

особините и способностите

на друг објект.

� Притоа, даден објектнаследува одредени особини

од друг објект и на нив може

да придодаде особини кои се

специфични само за него.

Forma

Krug Kvadrat

Page 16: programiranje vo c++

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

� Полиморфизмот претставува квалитеткој овозможува исто име да сеупотреби за повеќе сродни нотехнички различни цели.

� Примена на полиморфизмот во ООП еда се овозможи едно исто име да секористи за генерална класа на акции. Која од повеќето специфични акции ќебиде превземена зависи од типот наподатокот над кој се превзема.

Page 17: programiranje vo c++

Програмски јазик C++

� Создаден во 1980 година од BjarneStroustrup во Bell лабораториите во New Jersey. Иницијално бил наречен “C сокласи”.

� Името му било променето во C++ во 1983 година. Претрпел две поголеми ревизииво 1985 и 1990 година. Во 1997 година еусвоен последниот ISO стандард за C++ кој освен јазикот стандардизира и големабиблиотека на стандардни библиотеки икласи.

Page 18: programiranje vo c++

Влез/Излез текови

� Во C++ постои поинаков начин на работа состандардниот влез и излез отколку во C.

� cout (printf), cin (scanf), и endl (‘\n’)cout << “Vnesi nova vrednost: ”;

cin >> vred;

cout << “Novata vrednost e: ” << vred << endl;

� Операцијата << означува “прати во”стандардниот излез.

� Операцијата >> означува “извади од”стандардниот влез.

Page 19: programiranje vo c++

Влез/Излез текови

� Во cout и cin не се специфицира типот на

влезните и излезните податоци.

� Во cin не се користи знакот за адреса &пред промеливите.

� За користење на влезно/излезни функциизадолжително се користат

� Библиотеката iostream

� Просторот на имиња std

Page 20: programiranje vo c++

Влез/Излез текови: Пример

#include <iostream>

using namespace std;

int main() {

int i; char c; float f;

cout<< "Vnesi 2 broja i eden znak: ";

cin >> i >> f >> c;

cout<< "Vneseni bea: " << i << ", " ;

cout<< f << ", i " << c << endl;

return 0;

}

Page 21: programiranje vo c++

Подразбирани вредности за

аргументи на функција

#include <iostream>

using namespace std;

void show( int= 1, float = 2.3, long = 4 );

int main() {

show(); // Site tri vrednosti se preddefinirani

show( 5 ); // Se obezbeduva 1-iot argument

show( 6, 7.8 ); // Se obezbeduva 1-iot i 2-iot argument

show( 9, 10.11, 12L ); // Se obezbeduvat site 3 argumenti

show( , 3.5, 7L); // Greska, ne moze da se ispusti samo 1-iot arg

}

void show( int prv, float vtor, long tret ) {

cout<< “prv = " << prv<< ", vtor = " << vtor;

cout<< ", tret = " << tret;<< endl;

return;

}

Page 22: programiranje vo c++

Преоптоварување на

функции

� Можност за дефинирање на

различни функции со исто име.

� Името на функцијата го вклучува и

бројот и типот на нејзините

аргументи, но не и типот на излезот.

� Не е дозволено

int funk(int n)

double funk(int n)

Page 23: programiranje vo c++

Преоптоварување на

функции

#include <iostream>

using namespace std;

void show(int val) {

cout<< "Integer: " << val<< endl;

}

void show(double val) {

cout<< "Double: " << val<< endl;

}

int main() {

show(12);

show(3.1415);

return 0;

}