1 / 53

OBJEKTORIENTĒTĀS PARADIGMAS PAMATKONCEPTI:

OBJEKTORIENTĒTĀS PARADIGMAS PAMATKONCEPTI:. KLASES. UN. OBJEKTI. TRĪS JAUTĀJUMI:. 1. Cik no auditorijā esošajiem varētu salikt mobilo tālruni no pilna detaļu komplekta? 2. Cik no auditorijā esošajiem varētu ieregulēt mobilo tālruni tā, lai tas kā modinātājs nozvanītu tieši 11:45?

adanne
Télécharger la présentation

OBJEKTORIENTĒTĀS PARADIGMAS PAMATKONCEPTI:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OBJEKTORIENTĒTĀS PARADIGMAS PAMATKONCEPTI: KLASES UN OBJEKTI

  2. TRĪS JAUTĀJUMI: 1. Cik no auditorijā esošajiem varētusalikt mobilo tālruni no pilna detaļu komplekta? 2. Cik no auditorijā esošajiem varētu ieregulēt mobilo tālruni tā, lai tas kāmodinātājs nozvanītu tieši 11:45? 3. Kā Jūs varat lietot mobilo tālruni, janezināt kā tieši tas uzbūvēts?

  3. INTERFEISS (SASKARNE)Pazīstams un līdzīgs viena veida lietām • IMPLEMENTĀCIJASlēpta svešām acīm un varam atļauties par to neinteresēties, jo zinām, kādu efektu izraisīs katra mūsu darbība Auto Japāņu mikroshēmas

  4. Klase apraksta gan datus, gan objektu izturēšanos ( procedurālajā pieejā bija viegli atrast tikai datu aprakstu).

  5. Objekts satur šādu būtiskus aspektus: • Savu identitāti (var būt tik vien kā adrese atmiņā); • Atribūtus un to vērtības; • Klases izturēšanos (implementētāja skats); • Klases publisko saskarni (lietotāja skats).

  6. Ja diviem vienas klases objektiem ir vienādas atribūtu vērtības, vai no tā var secināt, ka tas ir tas pats objekts?

  7. OBJEKTI “Objekts ir klases instance. To viennozīmīgi identificē vārds un tam katru brīdi ir noteikts stāvoklis, ko nosaka tā atribūtu vērtības.” Vienkāršoti – arī parastu tipu mainīgo vērtību var saukt par stāvokli. Objekta stāvoklis mainās tikai tam pielietoto metožu rezultātā. Ar objekta izturēšanos mēs saprotam iespējamo objekta stāvokļu maiņas secību. “Objekta izturēšanos definē šim objektam pielietojamo metožu kopa.”

  8. ZIŅOJUMI • Sadarbība notiek izsūtot ziņojumus. • “Ziņojums ir prasība objektam izpildīt vienu no tā metodēm. Tādējādi, ziņojums satur • metodes nosaukumu • metodes argumentu(s).” • Vesels_Skaitlis x; // Definē jaunu objektu x • x.piešķir(13); // Klau, x, pielieto sev metodi • // “piešķir” ar argumentu 13. • “Metode ir asociēta ar klasi. Objekts pielieto metodi reaģējot uz ziņojuma saņemšanu.”

  9. ZIŅOJUMI Pieprasītājam ir jābūt saistītam ar objektu. Sūtītājs un saņēmējs. Kā pasta sūtījumi. “No kurienes šis sūtījums?” “Kas tev lika to darīt?” Var būt “naivs” un neinteresēties par sūtītāju. Kā ar e-pastu atvēršanu? Pieprasītājs NENOSAKA kodu, kas apstrādās ziņojumu. Līdzība un atšķirība no procedūrām. Viens un tas pats ziņojums var tikt izsūtīts dažāda tipa objektiem un izsaukt dažādas darbības. (Kā ar tālvadības pultīm?)

  10. OO Programma • Programma ir objektu kopums (kopiena, zupa), kurā objekti • tiek veidoti, • tiek iznīcināti, • sadarbojas savā starpā. Kādas zemūdens pasaulesobjektu īpašības varamievērot?

  11. OBJEKTU MIJIEDARBĪBA

  12. OBJEKTU MIJIEDARBĪBA Objekts var saturēt citus objektus kā sastāvdaļas.

  13. OBJEKTU MIJIEDARBĪBA Objekts var saturēt norādes (atsauces) uz citiem objektiem. Kā suņi pavadā?

  14. OBJEKTU MIJIEDARBĪBA Ziņojuma parametrs var būt objekts. Objektu var atdot kā vērtību, atbildot uz ziņojumu.

  15. OBJEKTU MIJIEDARBĪBA Objekts var sūtīt ziņojumus pats sev.

  16. OBJEKTU MIJIEDARBĪBA Objekts var būt “redzams” globāli.

  17. OBJEKTU MIJIEDARBĪBA “Dievveidīga” instance ir aizliegta! Labais stils – iztikt bez “Dievveidīgas” instances.

  18. MIJIEDARBĪBA CILVĒKS Televizors ?

  19. KAS IR OBJEKTI OOP ? • Fiziski objekti • Automašīnas satiksmes plūsmas simulācijā • Elektriskas komponentes shēmu projektēšanā • Valstis ekonomiskos modeļos • Lidmašīnas lidojumu vadības sistēmā

  20. KAS IR OBJEKTI OOP ? • Datora-lietotāja vide • Logi • Izvēlnes • Grafiski objekti (taisnes, taisnstūri, apļi, ...) • Pele, klaviatūra, drukātājs, ...

  21. KAS IR OBJEKTI OOP ? • Datu glabāšanas konstrukcijas • Pielāgoti masīvi • Steki • Saistīti saraksti • Binārie koki

  22. KAS IR OBJEKTI OOP ? • Ar cilvēku saistīti jēdzieni • Darbinieki • Studenti • Pasūtītāji • Pārdevēji

  23. KAS IR OBJEKTI OOP ? • Datu kolekcijas • Inventārs • Personīgā lieta • Vārdnīca • Pasaules valstu garumu un platumu tabula

  24. KAS IR OBJEKTI OOP ? • Lietotāja definēti datu tipi • Laiks • Leņķi • Kompleksie skaitļi • Punkti plaknē

  25. KAS IR OBJEKTI OOP ? • Datorspēlēs • Automašīna sacīkstēs • Pozīcija spēlē (šahs, dambrete) • Dzīvnieki ekoloģiskā simulācijā • Pretinieki un draugi piedzīvojumu spēlēs

  26. KLASES UN OBJEKTI • Lidmašīna • Dators • Grāmata • Pasaka • Viktors • Mūžīgais dzinējs • “Trīs sivēntiņi” • Sportists • Pasaku grāmata • Basketbolists • Dators, uz kura tiek rādīta šī prezentācija

  27. Kā aprakstīt redzamo objektu klasi?

  28. MANTOŠANA

  29. MANTOŠANA • Mantošana (angl.inheritance) ir mehānisms, kas ļauj klasei A mantot klases B īpašības. Tādējādi klases A objektam ir piekļuves tiesības klases B atribūtiem un metodēm, bez nepieciešamības tos pārdefinēt. • Ja klase A manto īpašības no klases B, tad saka, ka B ir A superklase jeb virsklase. Savukārt, A sauc par B apakšklasi. • Superklasi mēdz saukt arī par vecāku klasi. Apakšklasi sauc arī par bērnu klasi vai atvasināto klasi. • atvasinātajām klasēm atļauts pārrakstīt mantotās metodes

  30. MANTOŠANA Vai vienmēr viss tik jauki? “Izmainīt garākās malas garumu tā, laimalu garumu attiecība būtu n.” “Piešķirt šaurajam leņķim vērtību alfa.”

  31. MANTOŠANA

  32. DAUDZKĀRŠĀ MANTOŠANA • Ja klase A manto īpašības no vairākām klasēm (B1, B2, B3,..., Bn) tad ir darīšana ar daudzkāršo mantošanu. Tas var izraisīt nosaukumu konfliktus, ja vairāk kā vienai no A virsklasēm ir īpašības ar vienu un to pašu vārdu. • Atrisināšanas veidi: • virsklašu definēšanas kārtība nosaka to prioritātes. Pārējās kļūst “neredzamas”. • apakšklasei atklāti jāpasaka, kuras virsklases īpašību izmantot.

  33. MANTOŠANA

  34. ABSTRAKTAS KLASES Klasi A sauc par abstraktu klasi, ja tā tiek lietota tikai kā citu klašu virsklase. Šāda klase tikai specificē īpašības. To nevar lietot objektu veidošanai. Atvasinātajām klasēm jādefinē A īpašības. Vai kāds ir redzējis dārzeni? Ogu?

  35. ABSTRAKTAS KLASES Galvenokārt, lai strukturizētu mantošanas grafu. Virsklase ar funkciju Laukums(); r2 ab

  36. ŠABLONU KLASES Klasi A sauc par šablona klasi, ja tā tiek parametrizēta ar datu tipu B. Veidojot A klases objektu, B tiek aizstāts ar aktuālo datu tipu. Tas ļauj definēt aktuālo klasi izmantojot šablona klasi un aktuālo datu tipu. Vilciens ar <kāda tipa> vagoniem Vilciens ar pasažieru vagoniem Vilciens ar kravas vagoniem

  37. STATISKĀ SASAISTE Ja mainīgā tips T ir precīzi izteikts un viennozīmīgi sasaistīts ar tā vārdu V ar deklarācijas palīdzību, tad saka, ka V ir statiski saistīts ar T. Procesu sauc par statisko sasaisti. int i; .... i = “aaaa”; Cannot convert ‘char*’ to ‘int’

  38. DINAMISKĀ SASAISTE Ir programmēšanas valodas, kur nevajag noteikt mainīgā tipu pirms tā izmantošanas. #D $A := 3; PRINT $A; $A := 'abrakadabra'; PRINT $A; #CALL_PAS(1); ## Ja mainīgā ar vārdu V tips T ir viennozīmīgi nosakāms pēc tā satura, tad saka, ka V ir dinamiski saistīts ar T. Procesu sauc par dinamisko sasaisti.

  39. POLIMORFISMS Polimorfisms ļauj mainīgajam, funkcijai vai objektam pieņemt dažādas reprezentācijas. Polimorfismam var būt vairāki dažādi veidi. (saistīts ar dinamisko sasaisti) Mainīgā spēja izpildes laikā būt ar dažāda tipa vērtību tiek saukta par polimorfismu.

  40. POLIMORFISMS (saistīts ar funkcijām) Ja funkciju (metodi) definē salikums funkcijas vārds + argumentu tipu saraksts, arī to sauc par polimorfismu. Var lietot vienu un to pašu funkcijas vārdu dažādiem parametru tipiem. int ir0 (int i) { return (i==0); } int ir0 (double d) { return ((d>-0.000001)&&(d<0.000001)); } Ja realizētas abas funkcijas, tad varam viegli nomainīt parametra tipu funkcijasir0 izsaukumā.

  41. POLIMORFISMS • (saistīts ar objektiem un klasēm) Virsklašu objektu vietā var lietot to apakšklašu objektus. Apakšklašu operatoru un metožu izpildi var noteikt divos dažādos veidos: • balstoties uz objekta tipu, kas nozīmē, ka tiks izpildīta virsklases metode (operators, funkcija) • klasē “Paralelograms” aprakstīta funkcija “garākā diagonāle”. • d = Diagonāle(P); // P - Paralelograms • d = Diagonāle(T); // T - Taisnstūris • d = Diagonāle(K); // K - Kvadrāts

  42. POLIMORFISMS • balstoties uz objekta saturu, kas nozīmē, ka tiks izpildīta attiecīgās apakšklases metode(operators, funkcija) • Šo izpildes veidu sauc par polimorfismu. • klasēs “Riņķis” un “Paralelograms” aprakstītas funkcijas “Laukums”. Abām klasēm varētu būt abstrakta virsklase, kurā specificēta metode “Laukums”. • l = T.Laukums; // T - taisnstūris • l = R.Laukums; // R - riņķis

  43. POLIMORFISMS (C++ PIEMĒRS) #include "iostream.h" class A { public: virtual int f(void)=0;}; class B : public A { public: int f(void){return 1;}}; class C : public B { public: int f(void){return 2;}}; int kastasir(A* p) {return p->f();} int main(void) { B* b = new B(); C* c = new C(); cout << kastasir(b) << " " << kastasir(c) << "\n"; cout << b->f() << " " << c->f() << "\n"; return 0; } • 2 • 1 2

  44. OOP mērķis Izveidot pēc iespējas autonomu sadarbojošos objektu pasauli. Atrisina dizaina tehnoloģija, ko sauc par atbildības vadītu izstrādi.

  45. IZSTRĀDES PAMATS • Funkcijas • Datu struktūras • Izturēšanās

  46. IZSTRĀDES PAMATS - IZTURĒŠANĀS Izstrādes tehniku, kas balstīta uz sistēmas izturēšanos, var pielietot daudz agrāk, kurpretī tehnikai, kas balstīta uz sistēmas strukturālām īpašībām, nepieciešama sīkāka iepriekšēja analīze. “Objektorientēta programmatūras izstrāde ir metode, kas programmatūras arhitektūru veido ņemot par pamatu objektus, ar kuriem darbojas katra sistēma vai apakšsistēma (nevis uz funkcijām, ko attiecīgajai sistēmai paredzēts veikt).” Atbildības vadīta izstrāde (Responsibility Driven Design) ir viena no OO izstrādes tehnikām.

  47. ATBILDĪBAS VADĪTA IZSTRĀDE • Izstrādes tehnika, kurai ir sekojošas īpašības: • Nodarbojas ar neskaidrām un nepilnīgām specifikācijām • Dabā uzdevumu specifikācijas ir: • Neprecīzas (“pievienojiet sāli pēc garšas”) • Neskaidras • Divdomīgas • Dabiskā lietu virzība ir no analīzes uz risinājumu. Izstrādā sistēmas izturēšanās scenārijus. • Viegli integrē dažādos programmnodrošinājuma izstrādes aspektus

  48. ATBILDĪBAS VADĪTA IZSTRĀDE Atbildība ietver sevī neiejaukšanos. No ... līdz ...

  49. PROGRAMMNODROŠINĀJUMA KOMPONENTES • Zināms, ka sistēma sastāv no komponentēm. • Programmnodrošinājuma komponente ir abstrakta dizaina vienība ar kuru var asociēt dažādu uzdevumu veikšanas pienākumus. • Var tikt pārveidoti par funkciju, moduli, klasi, vai ko citu. • Komponentei jābūt atbildīgai par nelielu labi definētu uzdevumu kopu. • Komponentei jāsadarbojas ar citām komponentēm pēc iespējas mazā apjomā. • Kaut kur dzirdēti principi? • Komponente ar vienu darbību  funkcija • Komponente ar vairākām darbībām  klase

  50. PROGRAMMNODROŠINĀJUMA KOMPONENTES • Programmnodrošinājuma komponenti raksturo divi aspekti: • izturēšanās ir darbību kopums, ko komponente ir spējīga veikt. Pilnu šo darbību kopu sauc arī par protokolu • stāvoklis ir visas komponentes iekšienē esošās informācijas (datu vērtību) kopums • Izturēšanās un stāvoklis ir saistīti jēdzieni.

More Related