preslikava kartic crc v opo prehod iz načrtovanja kartic crc v opo implementacijo ni enostavna naloga zahteva predhodno poznavanje orodja njegovega jezika in razmislek o tem kako se konstrukti načrtovanja prilagajajo značilnostim orodja opo v prvem delu bomo predstavili kako se komponente kartic crc ujemajo s sintakso in značilnostmi orodja opo nato pa bomo na primeru knjiznice razlozili kako lahko na osnovi kartic crc kreiramo opo aplikacijo crc elementi kot opo elementi vsak element načrtovanja kartic crc kot so razredi odgovornosti sodelavci atributi nadrazredi in podrazredi predstavimo kot poseben element v opo na sliki so predstavljene mozne preslikave elementov kartic crc v opo elemente slika preslikava elementov kartic crc v opo elemente vsakdo bi pričakoval da je vse tako enostavno in lahko kot je predstavljeno na sliki vendar ni tako za vsak posamezni element kartic crc moramo najprej premisliti če ga res potrebujemo v opo aplikaciji pri pretvorbi pa moramo dobro poznati opo orodje razred in atributi v načrtovanju predstavljajo razredi pomembne entitete problemske in resitvene domene za vsak razred crc načrtovanja se pravi za vsako kartico crc naredimo tabelo v opo ju razen za tiste razrede ki ne vsebujejo atributov za hranjenje podatkov prav tako pretvorimo tudi atribute razredov tudi pri atributih moramo premisliti ali so primerni za naso aplikacijo dodamo nove atribute ki jih potrebujemo na primer za povečanje uspesnosti delovanja dodamo tudi izpeljane atribute katerih vrednosti lahko izračunamo na osnovi drugih atributov za vsako tabelo določimo ali pa kreiramo primarni ključ kot smo napisali ze v poglavju proces izgradnje opo aplikacije predstavljajo tabele ogrodje za implementacijo na sliki je primer pretvorbe kartice izposojevalec in njenih atributov v opo slika primer pretvorbe kartice izposojevalec v opo odgovornosti pri prehodu iz načrtovanja v implementacijo nam odgovornosti kartic crc pripomorejo pri prikazu objektov in pri definiranju mnozice funkcij za lazjo pretvorbo lahko odgovornosti klasificiramo v skupine kot so obdelava ze obstajajo funkcije sprememba stanja spremenimo vrednosti atributov in kontrola napisemo kodo nekatere odgovornosti direktno ustrezajo nekaterim funkcijam ki so ze del orodja ali jezika primer odgovornost kreiraj izposojevalca ustreza ze narejeni funkciji ki je vezana na gumb za dodajanje pri pritisku na ta gumb se doda v tabeli nova prazna vrstica vsaka odgovornost ki je v skupini kontrola predstavlja predpogoj določeni operaciji napisemo kodo in jo vezemo na gumb ki izvrsi določeno operacijo primer razred izposojevalec ima odgovornost lahko izposodi ki jo implementiramo z večvrstično kodo koda se izvrsi ob poskusu vnosa novega gradiva in je vezana na gumb za kreiranje nove vrstice na sliki je predstavljena preslikava odgovornosti kontrola izposoje razreda izposojevalec kjer najprej preverimo koliko predmetov je izposojenih za določenega izposojevalca in sele nato omogočimo izposojo kot rezultat dovolimo izposojo ali pa vrnemo sporočilo o nedovoljenem vnosu vsako funkcijo ki jo kreiramo oziroma napisemo vezemo na določen opo element slika preslikava odgovornosti kontrola izposoje v opo sodelavci v načrtovanju smo sodelavce pisali ob določeni odgovornosti pri vsakem izvajanju odgovornosti razred te odgovornosti sodeluje s sodelavcem in zahteva da se izvrsi sodelavčeva odgovornost sodelavce vključimo v kodo metode ali pa jih upostevamo pri funkcijah tako da napisemo kodo za izvrsitev določene sodelavčeve odgovornosti ki se lahko izvrsi samostojno vse te pretvorbe pa so odvisne od konkretnega primera obstajajo primeri kjer se pri izvajanju odgovornosti odpre novo okno pri tem pa razred za določeno odgovornost sodeluje s sodelavcem sodelavec ki je prav tako razred izvrsi svojo odgovornost in poslje sporočilo začetni odgovornosti pri teh primerih je vazno kaksna je odgovornost in kaj zahteva od sodelavca na sliki je predstavljena pretvorba odgovornosti lahko izposodi v katero je vključena tudi koda sodelavčeve odgovornosti da pregleda koliko gradiv je izposojenih za določenega izposojevalca v primeru prekoračitve dovoljenega stevila izposojenih gradiv se izpise sporočilo o nedovoljenem vnosu novega gradiva ob pozitivnem odgovoru pa dovolimo vnos gradiva izposojevalec sodeluje z gradivom relacije nadrazred podrazred relacije nadrazred podrazred preoblikujemo na tri načine nadrazred in vse podrazrede preoblikujemo v eno tabelo v katero vključimo vse atribute za vse podrazrede kreiramo tabele in v vsak podrazred dodamo atribute nadrazreda za nadrazred pa ne naredimo tabele vse podrazrede zdruzimo v eno tabelo enako naredimo z atributi prav tako naredimo tabelo za nadrazred in tej tabeli dodamo atribut ki loči podatke prejsnjih podrazredov ter referenco na druge tabele v nasem primeru smo se odločili za tretji način podrazrede knjiga Časopis in video so podrazredi gradiva smo zdruzili v eno tabelo gradivo povezali smo jo z relacijo ena proti ena s tabelo izposojeno gradivo nadrazred ter dodali atribut ki razlikuje izposojeno gradivo scenariji pri prehodu uporabljamo scenarije za odkrivanje pomanjkljivosti aplikacije pomagamo si ze s prej omenjenimi diagrami ki smo jih dodali dokumentu načrtovanja scenarije dopolnimo in razsirimo ter uporabimo kot testne primere za preverjanje delovanja aplikacije gradnja opo aplikacije zdaj ko smo podali pravila za pretvorbo kartic crc v opo je čas da kreiramo prototip aplikacije knjiznica proces gradnje in pretvorbe v aplikacijo je naslednji najprej pretvorimo kartice v tabele izberemo in definiramo atribute tabel kreiramo forme formam dodamo zeljene objekte in atribute izberemo opo funkcije in metode ki vsebujejo odgovornosti kartic crc in sodelavce po potrebi jih tudi kreiramo izdelamo poročila kreiramo menije in oblikujemo končno aplikacijo v prvem koraku pretvorimo in kreiramo tabele slika prikazuje razredni diagram aplikacije knjiznica v fazi načrtovanja debele usmerjene povezave predstavljajo dedovanje med razredi slika razredni diagram aplikacije knjiznica prvi in drugi korak smo resevali paralelno kajti ne moremo kreirati tabele brez atributov najprej kreiramo seanso v kateri bomo kreirali tabele pretvorili smo naslednje kartice iz kartice izposojevalec smo kreirali tabelo izposojevalec gradivo smo pretvorili v tabelo izposojeno gradivo kartice knjiga Časopis in video pa smo zdruzili v eno tabelo gradivo imena atributov niso bila enaka tako da smo jih poenotili dodali smo se tabelo oseba namen te tabele je da hrani vse osebne podatke o izposojevalcih ključ tabele izposojevalec id izposojevalca smo dodali tabeli oseba v tabelo izposojeno gradivo smo dodali primarna ključa od tabel izposojevalec in gradivo tako je relacija med tabelama izposojevalec in izposojeno gradivo ena proti mnogo med izposojeno gradivo in gradivo pa ena proti ena dodali smo atribut tabeli gradivo ki ga potrebujemo pri izračunavanju datumov zapadlosti in pri izračunu zamudnine in tudi ključ tabeli izposojeno gradivo id za ključ tabele izposojeno gradivo in izposojevalec smo kreirali sekvenco ki nam pomaga pri avtomatskem zaporednem dodajanju vrednosti ključa izpustili smo kartice uporabniski povezovalec kreiramo forme pb branje pisanje in pregledovanje podatkov je ze avtomatsko reseno s kreiranjem seanse knjizničar kreirali smo uporabniski vmesnik in vključili vpis gesla za usluzbenca knjiznice id verifikator je ze vključen v seansi transakcija izposoja in vrnitev so ze vključeni v funkcijah ter datum vključen je ze kot funkcija na sliki je prikazan entitetno relacijski diagram kreiranih tabel z atributi v opo aplikaciji knjiznica slika entitetno relacijski diagram za aplikacijo knjiznica tretji korak je kreiranje form ki jih potrebujemo pri aplikaciji razred uporabniski povezovalec smo razgradili oziroma nadomestili z več formami kreirali smo naslednje forme glavna izposoja gradiva prijava vnos gradiva in vnos izpo v glavno formo smo dodali tudi gumbe ki ob pritisku izvrsijo odprtje določene forme ali poročila v vsako okno smo dodali tudi gumb za izhod iz forme sledi dodajanje atributov formam glede na namen form smo tudi dodali atribute in opo elemente najbolj pomembna forma za naso aplikacijo vsebuje atribute iz tabel izposojevalec in izposojeno gradivo pretvorba odgovornosti in sodelavcev pa je tezavna za vsako odgovornost smo najprej premislili ali jo potrebujemo v aplikaciji ali je ze uporabljena ali jo napisemo z kodo in ali dodamo razred z ze realizirano funkcijo ali pa atribut ki predstavlja izpeljano vrednost osredotočili smo se predvsem na pomembnejse kartice crc v tabeli je predstavljena in opisana pretvorba kartic crc v opo aplikacijo kartice crc knjiga Časopis in video smo pretvorili v tabelo gradivo v tabeli pa je opisana samo pretvorba kartice knjiga tabela pretvorba kartic crc v opo aplikacijo ime kartice odgovornosti sodelavci prevedena odgovornost in sodelavci izposojevalec kreira seznam v formo vnos izpo dodamo razred clsreccontrol kot primerek v katerem je vključen tudi gumb ki izvede funkcijo nov zapis slika lahko izposodi pri zelji za vpis izposoje se izvrsi kontrola izposoje pregledamo ali je izposojevalec ze izposodil pet gradiv Če jih je ne dovolimo vpisa čejih pa ni pa dovolimo vnos izposoje novega gradiva funkcija je vezana na pritisk gumba za nov zapis slika pozna stevilo gradiv seznam pri določanju stevila gradiv smo uporabili ze narejeno funkcijo ki v določeni tabeli presteje zeljene podatke slika preveri zapadlost gradiva gradivo zapadlost gradiva preverimo takrat ko izposojevalec vrne gradivo v knjiznico pri brisanju gradiva iz seznama izposojenih gradiv preverimo če je prekoračil datum vrnitve Če je prekoračil mu izpisemo in zaračunamo zamudnino funkcija je vezana na gumb brisanje slika doda gradivo v mnozico seznam gradivo dodamo v mnozico s pritiskom na gumb ki je del primerka razreda clsreccontrol pritisk na gumb potrditve slika brisi gradiva iz mnozice seznam za brisanje gradiva smo dodali gumb brisanje najprej preverimo zapadlost gradiva sele nato je dodana funkcija za brisanje gradiva slika gradivo podrazredi knjiga Časopis in video izračuna datum zapadlosti datum za izračun datuma zapadlosti smo napisali kodo kjer upostevamo trenutni datum izposoje in kateri predmet izposodimo datum zapadlosti smo dodali kot atribut pod imenom datum zapadlosti datum izposoje pa pod imenom datum izposoje in tip predmeta ki ga izposojamo v tabelo izposojeno gradivo slika izračuna zamudnino datum izračunamo zamudnino če je bilo gradivo predolgo v izposoji za izračun zamudnine smo napisali kodo in jo dodali na pritisk gumba brisanje sliki in preveri izposojo datum kontroliramo izposojevalca če lahko izposodi se kaksno gradivo napisali smo kodo in upostevali ze narejene funkcije in če lahko dovolimo vpis podatka kodo smo vezali na pritisk gumba za nov zapis slika preveri vrnitev vrnitev preverimo tako da ko pritisnemo gumb brisanje in se izvede koda v katero smo vključili kodo za preverjanje če je bilo gradivo izposojeno predolgo Če je bilo izračunamo zamudnino če pa ni bilo potem pa potrdimo vrnitev slika preveri prekoračitev datum za kontrolo prekoračitve ze takoj ob izposoji izračunamo datum prekoračitve zapadlosti ki se vpise v tabelo pri vrnitvi in brisanju gradiva iz izposoje pa preverimo prekoračitev pri kodi za brisanje gradiva sliki in pozna datum zapadlosti datum zapadlosti smo predstavili kot atribut v tabeli izposojeno gradivo kot datum zapadlosti pri izposoji gradiva iz knjiznice določimo datum zapadlosti iz vrste predmeta in datuma izposoje slika pozna izposojevalca izposojevalca si izberemo sami s pritiski gumbov primerka razreda clsvcr slika pozna izposojo ali vrnitev status vrnitve in izposoje smo realizirali z izbiro gradiva katero gradivo bomo izposodili ali vrnili knjiga nadrazred gradivo izračuna datum zapadlosti datum datum zapadlosti izračunamo z upostevanjem ze narejene funkcije date katera vrne datum in temu datumu pristejemo stevilo dovoljenih dni izposojene knjige ter rezultat vpisemo v datum zapadlosti slika izračuna zamudnino za izračun zamudnine smo napisali kodo in jo vključili v kodo ter celotno kodo vezali na gumb brisanje sliki in slika primer forme vnos izpo slika koda za preverjanje zapadlosti gradiv izračun zamudnine in brisanje gradiv slika primer forme izposoja gradiva slika koda za izračun datuma zapadlosti za določeno gradivo v zadnjem koraku pa kreiramo poročila pregled gradiv pregled izpo pregled izposojenega gradiva za posamezne izposojevalce in pregled izposojevalca vse akcije ki jih izvrsimo s pritiskom na gumbe v glavnem oknu smo omogočili tudi v menijski vrstici tako da lahko preko menijev izvrsujemo akcije pri tem smo uporabili ze narejene funkcije in dodali se potrebno kodo v vsako okno razen glavnega okna smo vključili primerek razreda clsformcontrol ki omogoča tiskanje trenutnega zaslona in izhod iz okna na koncu pa smo aplikacijo se lepotno oblikovali na sliki je prikazano glavno okno aplikacije knjiznica slika primer glavnega okna aplikacije knjiznica