34
Osnovi Objektno orijentisanog programiranja

Uvod u oo_programiranje

Embed Size (px)

DESCRIPTION

Tradicionalni način programiranja je u osnovi proceduralan, zasnovan na funkcionalnoj dekompoziciji korisničkog, a zatim i programskog zahteva. Pri tome, podaci (atributi) koji se obrađuju i operacije nad njima nisu grupisani zajedno u objektima kao što je to slučaj kod OBJEKTNO ORJENTISANOG PROGRAMIRANJA, već su razbacani po programu.Osnovna ideja objektno orjentisanog programiranja je da sve te podatke (atribute ) izvučemo iz navedenih struktura i grupišemo po klasama zajedno sa relevantnim operacijama (funkcijama). Klase zatim struktuiramo hijerarhijski, formirajući hijerarhijsko stablo klasa, vodeći računa da atributi i operacije koji su zajednički za sve klase budu na višim hijerarhijama, kako bi ih niže hijerarhije mogle koristiti preko mehanizma nasleđivanja

Citation preview

Page 1: Uvod u oo_programiranje

Osnovi Objektno orijentisanog

programiranja

Page 2: Uvod u oo_programiranje

04/12/23 2

Od c ka c++ i c#

prvi Iskorak od • tradicionalnog, • proceduralnog,

• struktuiranog programiranjaka

• objektno orjentisanom programiranju

Page 3: Uvod u oo_programiranje

04/12/23 3

Osobine jezika C

• Tradicionalni način programiranja je u osnovi proceduralan, zasnovan na funkcionalnoj dekompoziciji korisničkog, a zatim i programskog zahteva.

• Pri tome, podaci (atributi) koji se obrađuju i operacije nad njima nisu grupisani zajedno u objektima kao što je to slučaj kod OBJEKTNO ORJENTISANOG PROGRAMIRANJA, već su razbacani po programu.

Page 4: Uvod u oo_programiranje

04/12/23 4

Tradicionalna, proceduralna, struktuirana organizacija programa razdvaja kod I podatke

main

podacipodaci

podacipodaci

podacipodaci

podacipodaci

Page 5: Uvod u oo_programiranje

04/12/23 5

Osobine jezika C++

• Osnovna ideja objektno orjentisanog programiranja je da sve te podatke (atribute ) izvučemo iz navedenih struktura i grupišemo po klasama zajedno sa relevantnim operacijama (funkcijama). Klase zatim struktuiramo hijerarhijski, formirajući hijerarhijsko stablo klasa, vodeći računa da atributi i operacije koji su zajednički za sve klase budu na višim hijerarhijama, kako bi ih niže hijerarhije mogle koristiti preko mehanizma nasleđivanja

Page 6: Uvod u oo_programiranje

04/12/23 6

Osobine jezika C++

• Tako učaurenim podacima i operacijama definišemo interface prema korisniku tih klasa a takođe i interface između pojedinih klasa u hijerarhiji klasa, sakrivajući kao implementacione detalje sve ono što nije bitno za njihovo korišćenje. Na taj načiin stvaramo softverske komponente ( softverske čipove ) koje možemo nasleđivati novim klasama i na taj način iste ugrađujemo u nove softverske proizvode.

Page 7: Uvod u oo_programiranje

04/12/23 7

Šta je c++

• Programski jezik c++ je jezik sa klasama, ili proširenje popularnog jezika c.

• C++ se zasniva na uvođenju nove korisničke strukture podataka tipa CLASS koja omogućava objedinjavanje podataka (atributa) i operacija (metoda ) nad njima u jednu celinu (paket) pomoću koje deklarišemo objekte.

• Korišćenje takvih objekata u programiranju naziva se OBJEKTNO ORJENTISANO PROGRAMIRANJE

Page 8: Uvod u oo_programiranje

04/12/23 8

Sabiranje dva broja bez korišćenja klasa

– #include<stdio.h>– main ()– {– int a,b;– a=2;– b=4;– printf(“Suma dva broja je %6d\n",a+b);

• }

Page 9: Uvod u oo_programiranje

04/12/23 9

i sa korišćenjem klasa• //Sabiranje dva broja Novi način označavanja komentara

• #include <iosteam.h> // Nova I/O strim biblioteka.

• Class paket // Novi korisnicki izvedeni tip podataka– // Klasa je novi tip za sve objekte koji se grade u njemu– // Klasa je ucaureni paket podataka i operacija koje operisu nad – // podacima.

• {int ImeAtributa; // podatak, atribut klase– // Podrazumeva se da je private sto znaci da se istom moze pristupiti – // preko metoda ove klase

• Public;

Page 10: Uvod u oo_programiranje

04/12/23 10

i sa korišćenjem klasa

• Void suma (int a , int b ) // metoda (funkcija ) klase koja implementirana “in line “ u samoj klasi. Metoda je public sto znaci da se ista moze pozvati bilo gde u programu.

– { int ImeAtributa = a+b; // Punjenje objekta

• Cout << “suma dva broja je :” << ImeAtributa; – // Novi nacin prikaza cout je objekat ugradjene klase klase

iosteam za ekranski prikaz po difoltu, //”<<“ je poziv odgovarajuce operator funkcije za prosledjivane izlaznih podataka na ekran.

}};

Page 11: Uvod u oo_programiranje

04/12/23 11

i sa korišćenjem klasa

• // Glavni program• Void main ()

• { paket objekat_zbir; //deklarisanje objekta

• objekat_zbir.suma(10,20); // Komunikacija sa objektom ostvaruje se posredstvom njegovih metoda

Page 12: Uvod u oo_programiranje

04/12/23 12

Osnovni koncept OOP klasifikacija

(classification)

apstrakcija

(abstraction)

učaurenje

(encapsulation)

nasleđivanje

(inheritance)

polimorfizam

(polymorphism)

Page 13: Uvod u oo_programiranje

04/12/23 13

Klasifikacija

Koren reci klasifikacija je klasa.

Kada obrazujete klasu, vi sistematski uredujete informacije u smislenu celinu. Reč je o klasifikaciji a to svi rade, ne samo programeri

klasifikacija je duboko ukorenjena u nas nacin razmisljanja i komuniciranja, tako da je logicno pokusati da se programi pisu klasifikovanjem razlicitih koncepata svojstvenih nekom problemu i njegovom resenju i zatim modelirati te klase u programskom jeziku

Page 14: Uvod u oo_programiranje

04/12/23 14

Moderni objektno orijentisani programski jezici omogucavaju da se definisu klase, koje kombinuju

ponasanja (metode) i

atribute (podatke).

Page 15: Uvod u oo_programiranje

04/12/23 15

Klase su strukture kojima su pridodata svojstva:

• Privatni pristup Enkapsulacije (sakrivanje, učaurenje) podataka

(atributa) i operacija nad njima

• Metode

Operacije nad atributima klase

• Nasleđivanje

Osobina da klase sa nižih hijerarhijskih nivoa mogu naslediti atribute i metode klasa sa viših hijerarhijskh nivoa)

Page 16: Uvod u oo_programiranje

04/12/23 16

Pokusaj definisanja klasa

Prototipski mehanizam za stvaranje objekta, omogućavajući njihovu klasifikaciju po grupama sa istim osobinama

Model za sve objekte koji se grade,

Agregacija podataka (atributa) obično različitog tipa i operacija, realizovanim funkcijama, nazvanim metodama koje obrađuju te atribute

Kolekcija više objekata koji imaju istu strukturu

Korisnički izveden tip podataka,

Page 17: Uvod u oo_programiranje

04/12/23 17

Apstrakcija

Geometrijski obliciGeometrijski oblici

PravougaonikPravougaonik ElipsaElipsa TrougaoTrougao

Page 18: Uvod u oo_programiranje

04/12/23 18

Apstrakcija

Apstraktni tipovi podataka omogućavaju da napravite klase koje sadrže privatna polja, privatne podatke iprivatne metode koji izvršavaju privatna izračunavanja.

Ta polja i metode ne možete da apstrahujete van klase. Međutim, da bi klasa imala praktičnu vrednost, ona mora da obezbedi neku vrstu „interfejsa“ za komunikaciju. Taj interfejs je skup javnih metoda koje aplikacije mogu da pozivaju. Ti metodi definišu

funkcionalnost ovih aplikacija.

Page 19: Uvod u oo_programiranje

04/12/23 19

Javni metodi mogu da koriste druge privatne metode i da pristupaju privatnim podacima da bi obavili svoj posao ali korisnika to ne zanima dok metodi rade ono što su obećali.

Pošto su mehanizmi koje javni metod koristi privatni, ili sakriveni, programer koji implementira klasu ima potpunu siobodu da obavi izračunavanja i da pristupa podacima kako god mu se čini pogodno.

Štaviše, neka kasnija verzija klase može potpuno da promeni te unutrašnje detalje (može, na primer, da upotrebi neki super novi algoritam koji je 100 puta brži od prvobitnog) ali, dok god javni „interfejs" ostaje isti (nudi se isti skup javnih metoda), sve postojeće aplikacije koje koriste ovu klasu i dalje funkcionišu.

Page 20: Uvod u oo_programiranje

04/12/23 20

Sta je enkapsuliranje?

Enkapsuliranje ima dve znacajne uloge:

Da kombinuje metode i podatke u klasu; drugim recima, da podrzi klasifikaciju.

Da kontrolise dostupnost metoda i podataka; drugim recima, da kontrolise koriscenje klase.

Klasa je programska konstrukcija koja obezbeduje sintaksu i semantiku koje podrzavaju te dve osnovne uloge.

Page 21: Uvod u oo_programiranje

04/12/23 21

Enkapsuliranje, u slici

Pravougaonik

– AtributiDužina

Širina

– MetodeCrtaj ()

Obim ()

Povrsina ()

Pomeri()

Page 22: Uvod u oo_programiranje

04/12/23 22

Enkapsuliranje u reci

klasa po imenu Krug koja sadrzi jedan metod (za izracunavanje povrsine kruga) i jedan podatak (poluprecnik kruga):

• class Krug• {• double Povrsina()• {• return 3.141592 * poluprecnik * poluprefinik;• }• double poluprecnik;• }

Page 23: Uvod u oo_programiranje

04/12/23 23

Kontrolisanje dostupnosti

Drugi kljucni aspekt enkapsuliranja: dostupnost. Za metod ili polje kaze se da je privatno ako je dostupno

samo unutarklase.

Da biste deklarisali da je metod ili polje privatno, napisacetekljucnu rec private ispred njegove deklaracije.

Za metod ili polje kaze se da je javno ako je dostupno i van i unutarklase

Da biste deklarisali da je metod ili polje javno, napisacete kljucnu rec public ispred njegove deklaracije

Page 24: Uvod u oo_programiranje

04/12/23 24

Ponovo klasa Krug. Ovog puta se Povrsina deklarise kao javni metod, a poluprecnik se deklarise kao privatno polje:

class Krug{public double Povrsina(){return 3.141592 * poluprecinik * poluprecinik;}private double poluprecnik; }

Page 25: Uvod u oo_programiranje

04/12/23 25

Objekti su…

Nezavisne programske celine koje sadrže metode (funkcije) i podatke

Različita pojavljivanja iste klase

Promenljive koje se kreiraju iz struktura tipa klase

Individualna realizacija klasa

Page 26: Uvod u oo_programiranje

04/12/23 26

Nasleđivanje,razvrstavanje zajedničkih osobina različitih klasa

Geometrijski obliciGeometrijski oblici

PravougaonikPravougaonik ElipsaElipsa TrougaoTrougao

Page 27: Uvod u oo_programiranje

04/12/23 27

Polimorfizam, različit odgovor na isti metod

GeoOblikcrtaj()

GeoOblikcrtaj()

Elipsacrtaj()

Elipsacrtaj()

Pravougaonikcrtaj()

Pravougaonikcrtaj()

Trougaocrtaj()

Trougaocrtaj()

Page 28: Uvod u oo_programiranje

04/12/23 28

Strukturno, naspram,objektno orijentisanom programiranju

Tendencije strukturnog programiranja

Proces u središteProces u središte

Algoritamskipristup

Algoritamskipristup

Objektno-orijentisane tendencije

Objekat u središteObjekat u središte

Baziran na porukama

Baziran na porukama

Monolitnost Monolitnost Modularnost Modularnost

Upotreba jedanputUpotreba jedanputPonovno korišćenjePonovno korišćenje

Podaci javniPodaci javniPodaci skriveniPodaci skriveni

1111

2222

3333

4444

5555

Page 29: Uvod u oo_programiranje

04/12/23 29

Strukturni pristup u programiranju

CrtajPrav(...){}PomeriPrav(...){}PromeniVelPrav(){}RotirajPrav(...){}

CrtajPrav(...){}PomeriPrav(...){}PromeniVelPrav(){}RotirajPrav(...){}

Funkcije

prav1dužinaširinacentar

prav2dužinaširinacentar

prav3dužinaširinacentar

prav1dužinaširinacentar

prav2dužinaširinacentar

prav3dužinaširinacentar

Podatak

Page 30: Uvod u oo_programiranje

04/12/23 30

Objektno-orijentisani pristup programiranju

dužinadužinaširinaširinacentcentaarr

dužinadužinaširinaširinacentcentaarr

Crtaj

Pomeri

Promeni vel.

Rotiraj

prav1 prav2

dužinadužinaširinaširinacentcentaarr

dužinadužinaširinaširinacentcentaarr

Crtaj

Pomeri

Promeni vel.

Rotiraj

Page 31: Uvod u oo_programiranje

04/12/23 31

Atributi i metodi

• Sluzbenik

- ImeiPrezime: string - Maticnibroj:string- Pol: char- Datumrodjenja: double

+ Uzmimaticnibroj()- Zadajmaticnibroj()+ Uzmipol()- zaDajpol()

PlatniSpisakPlatniSpisak

PlataPlata:: double double

+Izracunajplatu+Izracunajplatu()()

Page 32: Uvod u oo_programiranje

04/12/23 32

Atributi i metodi

U objektu se pored atributa nalaze odgovarajuće metode kojima se vrši zadavanje i vraćanje vrednosti atributa.

• ImeiPrezime• Maticnibroj• zadajmaticnibroj()• Uzmimaticnibroj()

Da bi se efikasno koristili metodi potrebno je znati:• Ime metode• Koji se parametri prosleđuju metodu• Povratni tip metoda

Page 33: Uvod u oo_programiranje

04/12/23 33

Atributi i metodi

• Objekat platni spisak sadrži metod izracunajplatu(), koji računa platu datog službenika.

• Objekat platniSpisak mora imati matični broj datog službenika. Da bi došao do te informacije objekat platniSpisak mora poslati poruku objektu Sluzbenik (metodu Uzmimaticnibroj().

• Objekat Sluzbenik prepoznaje poruku i vraća traženu informaciju

Page 34: Uvod u oo_programiranje

04/12/23 34

Ili, Klase su :

Prototipski mehanizam za stvaranje objekta, omogućavajući njihovu klasifikaciju po grupama sa istim osobinama

Šabloni za pravljenje objekata

Model za sve objekte koji se grade,

Agregacija podataka (atributa) obično različitog tipa i operacija, realizovanim funkcijama, nazvanim metodama koje obrađuju te atribute

Kolekcija više objekata koji imaju istu strukturu

Korisnički izveden tip podataka,