Objektorienteeritud analüüs, disain ja programmeerimine Kursuse eesmärk: Luua õppijatele tervikpilt rakenduste koostamisel tänapäeval valitsevaks saanud objektorienteeritud programmeerimise võimalustest ja kitsaskohtadest. Kava: Põhimõisted. Klassid ja objektid. Kapseldamine. Väljad ja meetodid. Sündmused. Osutid ja väärtusmuutujad. Andmetüüpide muundamine. Struktuurid. Objektide loomine ja kaotamine, konstruktorid. Juurdepääsupiiritlejad. Pärilus. Omaduste lisamine, peitmine ja muutmine. Virtuaalmeetodid. Liidesed: Kavandamine, kirjeldamine, realiseerimine. Abstraktsed klassid. Objektide loomise ja kasutamise mustrid ja tavad. Factory, Singleton. Mähisklassid. Sisemised klassid. Nimeruumid. Moodulid. Staatilised muutujad ja meetodid. Operaatorid, üledefineerimine, indekseerimisoperaator. Geneerilised klassid. Sündmused ja delegaadid. Omadused (property). Klasside metaandmed, atribuudid. Reaalse maailma modelleerimine objektidena. Objekti- ja klassiskeemi koostamine. Objektorienteeritud ja relatsioonilise andmestiku võrdlus. C# näited Õppetöö Kursus on üles ehitatud lihtsamast keerukama poole muutuvate praktiliste näidete peale. Näideteks on enamikus käsurearakendused. Suhteliselt palju lahendatakse ülesandeid objektorienteeritud struktuuriga programmide mõistmiseks, loomiseks ja kohandamiseks vajalike oskuste kinnistamiseks, mis on vajalik hilisemal rakendusprogrammide koostamisel. Kodutöödena tuleb igal üliõpilasel kokku panna üht konkreetset süsteemi (nt. asutuse palgaarvestus, auto mootor, malemäng) modelleeriv objektorienteeritud rakendus. Lisaks sellele moodustavad osa hindest veel vestlus teooriaseminaril ning eksamiülesande lahendamine. Põhiliseks õppematerjaliks on objektorienteeritud programmeerimise osa Microsofti korraldatud veebistuudiumi tarbeks loodud konspektist http://minitorn.tlu.ee/~jaagup/oma/too/07/10/oppematerjal0925.doc Lisaks leiab Internetist täiendavaid kirjutisi objektorienteeritud disaini kohta ja vabalt kättesaadavaid seletusi MSDN Books Online kaudu. 1. kodutöö kirjeldus Omaloodud klass konkreetsete andmete hoidmiseks ja nendega ümberkäimiseks. Andmete sisestus ja kontroll konstruktoris (ning vajadusel ka mujal). Mitmesuguste andmete küsimine käskude kaudu. Kõrvale üks või kaks testprogrammi loodud klassi võimaluste demonstreerimiseks ja kontrolliks. Näide: Klass isikukoodi andmete haldamiseks. Käskude abil päeva, kuu, sünniaasta küsimine, koodi korrektsuse kontroll. http://minitorn.tlu.ee/~jaagup/kool/java/kursused/08/mkoo/isikukood.txt Peaprogramm klassi töö katsetamiseks. Paar erisugust isikukoodi kus andmeid küsitakse + isikukoodide massiiv, kust trükitakse välja isikud, kes on sündinud vahemikus 1990-1995. Ideid: Auto andmed (mark, mass, kütusekulu/100km). Kulunud kütuse leidmine vastavalt vahemaale. Massiivist autode leidmine, kel etteantud kütusekogusega võimalik soovitud kaugusele jõuda. Isikuandmete kogu: Eesnimi, Perekonnanimi, elektronpost. Käsklus postiaadressi domeeni (@-märgi järel leiduv) küsimiseks. Isikute massiivist etteantud domeenis asuva elektronpostiaadressiga isikute leidmine. 2. kodutöö kirjeldus Mälus töötav andmestruktuuriga rakendus, kuhu saab andmeid lisada, muuta ja otsida. Soovitavalt on kasutatud kogumeid, alamklasse, liideseid jm. õpitut. Näide: Korvpallimeeskonna andmestik. Klassideks Inimene (perekonnanimi, isikukood), Mängija (inimese alamklass, lisaks olemas mänguminutid, resultatiivsed söödud), Treener (inimese alamklass, lisaks seni treenitud klubide loetelu). Liideseks Eelarvekulu (nimetus, summa). Meeskond koosneb mängijatest ja treenerist. Tal on eelarve, kuhu lisada kulusid. Juhtprogrammiga võimalik lisada ja küsida andmeid (mängijad, kulud) Ideid Arvuti komponendid, liinibusside graafik, kaardiga avatavate ustega hoones liikumine. Hinde saamiseks tarvilik: 1. kodutöö 5p 2. kodutöö 5p teooriaseminar 0p (vajalik eksamieeldusena) eksamiülesanne 5p Skaala A 14 B 12 C 10 D 8 E 6 Jaagup Kippar jaagup@tlu.ee