Sei sulla pagina 1di 17

1

Univerzitet u Tuzli
Mainski fakultet





RAUNARI I PROGRAMIRANJE


UVOD u Objektno - Orijentisano - Programiranje (OOP)
programski jezik C #




Dr. Salko osi





maj 2014
2



Sadraj:

Programske metodologije koncepti, paradigme
OOP
Objekti, klase, enkapsulacija, naslijeivanje, polimorfizam
OO jezici, Implementacija, Java, C#
















3

PROGRAMSKE PARADIGME (KONCEPTI)

Potekoe u implementaciji programskih rjeenja za velike i sloene probleme:
Kompleksnost (sloenost problema za koji treba razviti aplikaciju)
Prilagodljivost
Promjenjivost zahtjeva i uslova

Kompleksnost
Bez obzira na prividnu jednostavnost, svi dijelovi programa su u meusobnoj interakciji.
Pojednostavljivanje modela utie na gubitak svojstava i manju tanost.
Programi su teki za razumijevanje i praenje.
Oteano je odravanje i unapreenje programa.


Prilagodljivost i promjenjivost
esti zahtjevi korisnika programa za izmjenama i dopunama mogunosti programa vode ka poveanju
kompleksnosti. Ponekad male promjene funkcionalnosti tj. programskih mogunosti zahtijevaju velike promjene
u izvornom kodu !
Multimedijalni zahtjevi, vizualizacija: pred savremene programe postavljaju se strogi zahtjevi za
vizualizacijom i grafikim interface-om, mrenim uslugama, internet komunikacijama ...

KLASINI PRISTUP (proceduralno programiranje) TEKO ZADOVOLJAVA PRETHODNE
ZAHTJEVE.
4

Osnovni programski koncepti (paradigme, metodologije)
Programska paradigma odreuje nain modeliranja problema ali i nain izvravanja programa. Veina viih
programskih jezika podrava samo jednu programsku paradigmu, onu kojoj pripadaju ali neki (npr. C++) podrava
dvije programske paradigme. Osnovne paradigme (koncepti) su:

proceduralno programiranje
modularno programiranje
strukturirano programiranje
objektno-orijentisano programiranje OOP

Proceduralno programiranje
Prethodno specificiranje koraka (naredbi) koje program mora izvriti (procedure manipulisanja sa podacima zadate
su algoritmom). Procedure se mogu pozvati u bilo kojoj toki izvravanja programa, ali i iz samih procedura.
Osnovni princip izgradnje inenjerskih programa vezanih za numerika raunanja.
Najvanije osobine:
Fokusirani na algoritam koji manipulie ulaznim podacima
Svi podaci (varijable) su vidljive i dostupne iz glavnog programa
Teki za modificiranje i proirivanje
Imaju sloenu strukturu za kompleksne probleme
Prednosti:
mogunost ponovnog koritenja istog koda na razliitim mjestima unutar programa
jednostavnije praenje programskog toka (grafiki prikaz=dijagram toka)
osnova za razvoj modula, odnosno osiguranja strukturiranog pristupa.
5

Modularno programiranje

Modularnost u programiranju je jedan od osnovnih principa, nezavisno o programskoj paradigmi i ako ne postoji
opta saglasnost o tome ta je modul. Kod velikih i sloenih programa, da bi se osigurala, itljivost programa i
olakalo njegovo razumijevanje i odravanje, modularnost postaje nuna.

Razliiti autori imaju i razliite pristupe i definicije modula:

S. McConnell: modul je "skup rutina'' koje zajedno obavljaju neku globalnu funkciju poput formatiranog izlaza,
itanja podataka iz datoteka ili pristupa glavnim strukturama podataka"

Stevens, Myers, Constantine: Modul je skup jednog ili vie bliskih programskih izraza koji imaju svoj naziv po
kojem ih ostali dijelovi sustava mogu pozvati, i poeljno je da imaju vlastiti poseban skup imena varijabli, [1974].

Modul je logiki nezavisna i logiki zaokruena programska cjelina

Moduli se mogu nezavisno programirati i testirati
Mogu se formirati moduli zajedniki za sve
Ispravak, testiranje i dokumentiranje je jednostavnije i bre
Veze izmeu modula trebaju biti jednostavne i vidljive
Modul u pravilu treba imati jednu ulaznu i jednu izlaznu taku
Nakon izvravanja modul vraa kontrolu na mjesto pozivanja


6

Strukturirano programiranje - podskup proceduralnog programiranja.

[E.W. Dijkstra]: Strukturirano programiranje je specifian nain pisanja programa gdje se za kreiranje logike
programske strukture primjenjuju standardizovani elementi.

Programiranje uz upotrebu standardizovanih elemenata i prema utvrenim pravilima poveava produktivnost,
smanjuje pogreke, poveava itljivost i olakava testiranje i odravanje programa.

Svaka logika programska struktura moe se proizvesti od 3 osnovne strukture:
- sekvencija
- selekcija
- iteracija

Sekvencija niz naredbi koje se izvravaju jedna za drugom, onim redoslijedom kako su napisane
Selekcija uslovno (logiko) grananje (npr. IF-THEN-ELSE)
Iteracija ciklina struktura petlja - viestruko izvravanje skupa naredbi DO, DO WHILE petlja








7

OBJEKTNO ORIJENTISANO PROGRAMIRANJE (OOP)
Vladajua, vodea, najnaprednija metodologija za izradu sloenih, velikih programskih aplikacija.

Kvadratna jednaina (proceduralni pristup) najvaniji je algoritam (procedura,) podaci su manje bitni
Program za manipulisanje bazom podataka: podaci su bitni, nain manipulisanja (algoritam) je manje bitan
OOP i algoritam i podaci su jednako bitni i pakuju se zajedno u objekte

Objektno-Orijentisani-Programski koncept polazi od toga da se program posmatra kao skup pojedinanih dijelova,
ili objekata, koji surauju (rade) jedan s drugim meusobno izmjenjujui poruke. Svaki objekt ima sposobnost
primanja poruke, obrade podataka i slanja poruke drugim objektima. Poruka utie na promjenu stanja objekta.
Stanje objekta se definie njegovim unutranjim varijablama (atributima).













8


Primjeri: nastavni proces (student,profesor, predmet, uionica, vrsta nastave...), raskrsnica ..., GUI












Svaki objekt ima: identitet, stanje u kojem se nalazi i ponaanje (operacije koje moe da izvri)
Stanje objekta definisano je unutranjim varijablama (podacima, data members, atributi)
Ponaanje (behavior) definisano je funkcijama (member functions, methods). Funkcije se aktiviraju porukama
ili dogaajima.
Poruka je formalna komunikacija (poziv, zahtjev) poslana od strane jednog objekta drugom a koja zahtjeva neki
servis (uslugu), dovodei do aktiviranja metoda i promjene stanja.

Objekti se sastoje od lanova (Members ):
Attributes (Data) npr. objekt auto: sjedala, vrata, motor, tokovi
Methods (Functions) npr. kreni, stani, zakoi, ubrzaj, upali svjetla
9

Razvoj OO jezika:
Simula (Simulation programming language), definisan kasnih 60-tih (O.J. Dahl Kristen Nygaard )
Smalltalk nastao poetkom 1970-tih (Alan Kay). Prvi uspjeni, iroko prihvaeni OO jezik. Jo u upotrebi.
Pet osnovnih karakteristika SmallTalk-a (A.Kay):
1. Sve je objekt. Objekt posmatrajte kao poboljanju varijablu kome se moe osim uvanja podataka postaviti
i zahtjev za izvrenje operacija nad tim podacima.
2. Program je skup objekata koji komuniciraju porukama
3. Svaki objekt ima memorijski prostor koji se sastoji od drugih objekata
4. Svaki objekt je instanca neke klase. Klasu moemo shvatiti kao uoptenje tipa podataka.
5. Svi objekti iz iste klase mogu da primaju iste poruke.
C++ B. Stroustrup je razvio C++ kombinujui Simula jezik koji je bio vrlo funkcionalan sa C jezikom koji je vrlo
efikasan. C++ je najraireniji OO programski jezik. Obuhvata klasini C sa OO proirenjima. U njemu je napisan
Windows OS i mnoge svakodnvne aplikacije koje koristimo.

Java Jezik C++ bio je suvie komplikovan za koritenje svih svojih OO mogunosti. Uproavanjem C++-a, Bill Joy i
James Gosling razvili OAK, prvu verziju Java jezika. Java aplikacije su se mogle koristiti pomou Sun-ovog web
browser-a HotJava apleti ime je znatno ubrzano irenje i uspjeh novog jezika. Java je opti programski OO jezik,
sa korjenom u C++ jeziku ali znatno jednostavnija, bez nepotrebnih i opasnih karakteristika. Zbog toga to je
interpreterskog tipa, postigla je veliku portabilnost (mogunost apliacije da radi pod razliitim operativnim
sistemima).

10

Visual Basic (VB) je postao jedna od najeih razvojnih platformi za Windows OS aplikacije. Osnovna mu je
prednost mogunost brzog razvijanja grafikog interface-a aplikacije.
VB 1.0 May 1991 for Windows.
VB 6.0 Summer 1998.
VB .NET 2002. Osnovni nedostaci: Radi samo pod windows OS
Vlasnitvo je Microsoft-a koji ga neprekidno razvija (unaprjeuje).
Novija verzija esto nije kompatibilna sa prethodnim.
Nije efikasan za numerika raunanja

C# (ita se arp) je savremeni objektno orijentisani programski jezik opte namjene, razvijen od strane Microsoft-
a (Anders Hejlsberg) a prva verzija se pojavila u julu 2000 godine. Nastao kao odgovor na uspjeh Jave koju Microsoft
ne podrava. To je moderan OO jezik, vrlo slian sa Javom i C++. (70% Java, 10% C++, 5% Visual Basic, 15% new)

Python (simulacije, grafika)

OO razvoj programa (aplikacije)

Object-Oriented Analysis - OOA
Identifikacija objekata u real world problemu
Specificiranje ponaanja, stanja i interakcije
Organizacija slinih objekata u klase (ista semantika, ponaanje)


11

Object-Oriented Design - OOD
Specificiranje poruka izmeu objekata
Izrada klasnih dijagrama -- (UML) seminarski rad


Object-Oriented Programming - OOP
Izrada potrebnih klasa (programiranje)
Kreiranje objekata iz klasa, kreiranje metoda za manipulisanje porukama
Testiranje klasa i objekata pojedinano
Definisanje glavnog programa koji objedinjava sve objekte i metoda main koji pokree program

Osnovni termini OOP:
Objekt
Klasa
Nasljeivanje
Enkapsulacija (ahurenje, pakovanje, umotavanje)
Polimorfizam


Klasa
je apstrakcija (zajedniki opis) za skup objekata s istim atributima i operacijama, odnosno to je predloak (engl.
template) iz koga se kreiraju pojedinani objekati. Zbog toga se kae da je objekt instanca (konkretni oblik, primjerak)
klase. Svaki objekt jedne klase nasljeuje njene osobine (metode i atribute).

12

Nasljeivanje (inheritance)
mehanizam koji omoguuje da klasa (podklasa) naslijedi i redefinira (promijeni)
ponaanje i osobine naslijeene neke druge klase (nadklase). Podklasa (subclass) ima
sve to i nadklasa (superclass), ali i (ako je potrebno) jo neto to je specifino samo
za nju.
Nasljeivanje se moe definisati i kao nadreena-podreena relacija izmeu klasa u
kojoj podreena (dijete, child) klasa ima isto ponaanje kao i nadreena (roditelj,
parent) klasa.

Enkapsulacija (umotavanje)
Osigurava da programski kod izvan klase (tj. druga klasa) vidi samo funkcionalne (ta
moe da radi), ali ne i implementacijske detalje klase (kako je to programirano). Time
se skriva ponaanje objekta od njegove implementacije (data hiding), odnosno
vanjski svijet samo zna kako se objekt ponaa ali ne i kako implementira svoje
ponaanje (kako je programiran). Niko osim programera objekta ne moe znati kako
iznutra taj objekt izgleda, tj. na koji nain izvrava svoj zadatak. Rezultat
enkapsulacije je da svaki objekt prema vanjskom svijetu, tj ostalim klasama
pokazuje svoje suelje tj. skup poruka (metoda) na koje odgovara = interface.

Object=black box.


specifikatori pristupa: private, protected, public

13

Polimorfizam

potjee od grkih rijei poly mnogo i morph-oblik. U objektno orijentisanom programiranju to znai da jedna
poruka moe uzrokovati razliite oblike odgovora u zavisnosti kako je objekat kome se alje interpretira.
Polimorfizam je ponaanje koje se mijenja zavisno od toga koja klasa ga uzrokuje, to znai da dva ili vie objekata
mogu reagovati potpuno razliito na istu poruku, odnosno da je objekt primatelj poruke odgovoran za njenu
interpretaciju a ne sama poruka.



Prednosti OOP

Jednostavnije modeliranje sloenih problema upotrebom apstraktnijih elemenata = objekata
jednostavno koritenje dijelova koda u razliitim programima, tedei vrijeme u analizi, dizajnu, razvoju,
testiranju, i otklanjanju greaka,
mogunost kupovine dijelova postojeeg, testiranog koda da bi se u razvoju omoguio komponentno-zasnovani
pristup,
smanjeni trokovi razvoja,
mogunost podjele velikih projekata na vie programskih dijelova koje radi razliiti programeri,
poboljane karakteristike debagiranja i testiranja,


Za probleme koji se svode na manipulaciju sa prostim tipovima podataka (numeriki tipovi) po prethodno
definisanoj proceduri (algoritmu), algoritamski (proceduralni) pristup je jednostavniji i efikasniji.
14

C # OSNOVE:

Osnovni jezik ".net" platforme, (C++,VB, JScript .NET), prvi put se pojavljuje 2000 god.

70% Java, 10% C++, 5% Visual Basic, 15% new



















15




















PRIMJER KONZOLNE APLIKACIJE:




16

// ZBIR_Cijelih_Brojeva.cs
// Ovaj program racuna sumu dva cijela broja unesena sa tastature /* komentar */

using System; // upotreba namespace-a System (prostor imena)
public class SUMA
{
// Main metod poinje izvravanje C# aplikacije
public static void Main( string[] args )
{
int broj_1; // deklaracije tipa brojeva
int broj_2; //
int zbir ; // deklaracija rezultata

Console.Write( "unesi prvi broj: " );
// unos sa tastature
broj_1 = Convert.ToInt32( Console.ReadLine() );

Console.Write( " unesi drugi broj: " );
// // unos sa tastature
broj_2 = Convert.ToInt32( Console.ReadLine() );
// konverzija tipa "string u integer"
zbir = broj_1 + broj_2; // racunanje zbira

Console.WriteLine( "Sum is {0}", zbir ); // prikazuje zbir

} // end metod Main

} // end class SUMA

17


Pitanja:
1. Osnovni programski koncepti
2. Karakteristike i prednosti proceduralnog programiranja
3. Modularno programiranje
4. OO koncept programa
5. Objekt: sadraj i osobine
6. OO postupak razvoja programske aplikacije
7. Definicija klase
8. Osobina naslijeivanja (inheritance)
9. Osobina polimorfizma
10. Enkapsulacija
11. Prednosti OOP

Literatura:
G. Booch: Object-Oriented Analysis and Design with Applications, Addison-Wesley 2007
OOP, Dragan Miliev, Beograd 2005
SunMicrosystem: JAVA, JDK
B. Strustrup: C++ Language, 1987
S. Matkovi: Osnovi programiranja
u okruenju grafikih OS: jezik C#
OO nain miljenja, M. Weisfeld

Potrebbero piacerti anche