Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

1 ObjektOrientert Systemutvikling del I Arne Maus, førsteamanuensis, Inst for informatikk, Univ. i Oslo (tidl: Univ i Tromsø, Norsk Regnesentral, MYCRON,

Liknende presentasjoner


Presentasjon om: "1 ObjektOrientert Systemutvikling del I Arne Maus, førsteamanuensis, Inst for informatikk, Univ. i Oslo (tidl: Univ i Tromsø, Norsk Regnesentral, MYCRON,"— Utskrift av presentasjonen:

1 1 ObjektOrientert Systemutvikling del I Arne Maus, førsteamanuensis, Inst for informatikk, Univ. i Oslo (tidl: Univ i Tromsø, Norsk Regnesentral, MYCRON, SIFF)

2 2 Oversikt – dag 1 o Grunnbegreper o Litt om OO programmering (C++, Java) o OO analyse og design (systemutvikling) o 8 stegs analyse/design metode o OO samvirke o UML og RationalRose - notasjon og metode o OO databaser o + Øvelsesoppgaver

3 3 OO programmering og systemutvikling  Objektorientering er :  en annen tenkemåte  en annen måte å dele opp problemet og programmere dette  mer effektiv for store systemer  ikke valg av et bestemt OO-programmeringsspråk  Objektorientering dekker  programmering  systemutvikling  dokumentproduksjon  brukergrensesnitt  databaser  operativsystemer, nett  gjenbruk av programvare

4 4 OO-begreper  Spesielle trekk  historikk  forhold verden modell  notasjon  klasser og objekter  pekere og dynamisk hukommelseshåndtering  innkapsling av moduler  arv / virtuelle  gjenbruk

5 5 Hvorfor en nytt programmerings- paradigme (stil) ?  Programvare-krisen :  Store systemer, kompleksitet, kostnader  Mer dynamiske systemer  Vedlikehold av programvare dyrt (ca. 70% av kostnadene)  Feilretting  Nye krav  Bedre brukervennlighet, nytt grafisk grensesnitt  Preventivt vedlikehold

6 6 + Applikativ/funksjonell programmering (Lisp, ML) + Logikkprogrammering (Prolog) Programmerings-stiler, historikk  Prosedyreorientert, strukturert programmering  Teknisk/vitenskapelig miljø  Datamodellering  Forretningslivet, IBM  Objektorientering  “Alle” miljøer, men startet i teknisk miljø.

7 7 I) Prosedyreorientert, strukturert programmering  Modellerer løsningen som en rekke med handlinger  FORTRAN, C, Pascal  State maskiner, transisjonsmatriser  Prosedyre begrepet  Navngi samling av handlinger, generalisere løsningen ved parametre  Dynamisk hukommelses bruk  Stakken, rekursive prosedyrer

8 8 Top-down analyse  Problemet løses ved kall på en prosedyre “Løs_problemet”  Denne handlingen deles opp i flere under/del- handlinger  Disse deles opp igjen.... inntil hver del blir liten nok og lett å kode  Handlingen er alt  deklarasjoner spres omkring “tilfeldig”

9 9 II) Datamodellering  COBOL  Navn på sammensatte data, records (Data Section)  Operasjoner på sammensatte data  Relasjonsmodellen statiske relasjoner  SQL  Entity-Relationship  NIAM  Data er “alt”  handlingene i prosedyre-divisjonen er trivielle  Alle skulle kunne lage Cobol, SQL, 4GL,...programmer selv

10 10 III) Objektorientering & systemperspektiv  Data og handling like viktig, både:  Prosedyrer (= navn på sammensatte handlinger, kalt metoder)  Recorder (=navn på sammensatte data)  Utgangspunkt i simulering  modellering av verden  Som programmerere/systemerere lager vi:  en modell av den del av verden vi lager system for  forholder vi oss til brukere og andre systemer  bruker en viss mengde isenkram (maskiner, kommunikasjonslinjer, sensorer, skjermer, skrivere,..) til å realisere systemet

11 11 OO og Simula 67  Objekt-orientering startet i Norge  O.J.Dahl og K. Nygaard Simula I og Simula 67  Simuleringer (modellerer verden som en rad med prosesser)  La ikke selv vekt på “objekt-orienteringen”, brukte selv ikke ordet.  Smalltalk  Allen Key Apple/MacIntosh  To skoler  Skandinavisk (Simula, C++, Java, Eiffel, Fortran, Cobol...)  “Ren OO” “alt” er objekter (Smalltalk, Actor)

12 12 Verden består av objekter som samhandler  Verden består av objekter:  Hus, trær, mennesker, bankkonti, regninger, ansatte, studenter, biler,..  Objekter i data-systemet  objekt = Data til en ‘gjenstand’ + operasjoner på denne  objekter kan oppretter andre objekter  gjør operasjoner på hverandre (kaller metoder) = “sender meldinger” til hverandre  Objekter består av både data og operasjoner som logisk hører sammen med disse data og dette objektet

13 13 Forholdet mellom system og verden  Som programmerere/systemerere velger vi ut:  den del av virkeligheten vi er interessert i (problemområdet)  de delene av dette som er interessante for vårt formål (problemområdets objekter med tilpasset detaljeringsnivå)  Programmet / systemet skal gjenspeile verden en-til-en Ett objekt i vår del av verden => ett objekt i systemet + objekter for i/o + av og til ‘finnes’ bare objektene i maskinen eks. bankkonto

14 14 Startpunkt: OO-programmering  Forstå begrepene ved å se dem nyttet i programmering  objekter og klasser  pekere  innkapsling  arv, super/subklasser - generalisering/spesialisering  virtuelle metoder (polymorfisme)

15 15 Objekter og klasser  Bare én klasse  = beskrivelse/mal for hvordan objektene dine skal se ut  eks: bare én beskrivelse av hvordan en honnørkonto ser ut  Ett eller flere (mange) objekter samtidig av en klasse  eks: mange ‘honnørkonto’ objekter i et kjørende banksystem  Et objekt er som en metode som ligger igjen i hukommelsen etter at den er ‘ferdig utført’, og hvor vi kan:  Få adgang til lokale data i objektet  Kalle de lokale metodene i objektet

16 16 data (ikke tilgjengelig utenfra) synlige operasjoner = “grensesnitt med tilbud av tjenester” interne hjelpe- operasjoner Objekt: Klasser og objekter  Klasser er fellesbeskrivelser av like objekter

17 17 Data og operasjoner som en naturlig enhet - eks 1  Eks: STUDENT REGISTER  Hvordan representere en student ( lage class student)  Data: navn, adresse, personnummer + ‘ et visst antall’: (kursnavn, karakter)  Operasjoner ( dvs. metoder) meld_opp_til_eksamen (kurs) registrer_eksamens_karakter (kurs, karakter) regn_ut_gjennomsnitt_karakter ( ) skriv_ut_vitnemål( )  N.B. Dette er operasjoner på bare én student.

18 18 Pekere & dynamisk hukommelse  Objekter får man adgang til via peker- variable (adresser)  Objekter opprettes og ‘dør’ under eksekvering (variabel datastruktur)

19 19 class Bil {int regnr; String eier; } Bil minbil; Bil dinbil; minbil = new Bil(); minbil.regnr = ; dinbil = new Bil(); Hvordan opprette objekter, hvordan få tak i innholdet

20 20 Objekt-Orientert program  Klasse-deklarasjoner (med datadel og operasjoner i form av metoder)  Deklarasjon av andre globale variable (dette gjelder C++ - ikke Java)  Evt. metoder som ikke er med i noen klasse. (dette gjelder C++ - ikke Java)  Hovedprogram hvor det bl.a opprettes noen objekter, og man begynner å kalle operasjoner i disse objektene.... I Java : ALT er klasser og objekter. Hovedprogrammet er inne i en av klassene

21 21 Innkapsling  Bare nødvendige operasjoner synlige fra utsiden  Vi skiller altså sterkt mellom:  Grensesnittet til en klasse =  De operasjonene den tilbyr resten av programmet  Implementasjonen av dette og alle detaljene inne i klassen  eks i Java: (neste foil )

22 public class konto { int kontonr, saldo; String eier ; konto( int knr, String s) { kontonr = knr; eier = s; saldo = 0;} public void sett_inn(int beløp) { saldo = saldo + beløp;} public void ta_ut_beløp(int beløp) { saldo = saldo - beløp;} public void overfør (int beløp, konto konto2) { ta_ut-beløp (beløp); konto2.sett_inn(beløp); } public int kontonummer ( ); { return kontonr;} }

23 23 Objektorientering basis, oppsummering  Komponenter i programmet representeres som objekter  OO programmer ‘simulerer’ virkeligheten, ett objekt i programmet for hvert ‘ting’ i virkeligheten + objekter som representerer deler av løsningen (vinduer og knapper på skjermen, en printer,..)  Objekter har både data og operasjoner  Objekter deklareres som klasser (det kan være mange objekter av en klasse)  Objekter genereres dynamisk (med new)  Innholdet (variable og metoder) fås adgang til ved pekervariable  Innkapsling betyr at selve implementasjonen av en klasse skjules. Hver klasse fremstår bare med et sett av veldefinerte operasjoner (metoder) overfor resten av systemet.

24 24 Objektorientering, ’avanserte’ begreper I. Arv av egenskaper - subklasser II. Redefinering av operasjoner - virtuelle metoder

25 25 I. Subklasse = Arv av egenskaper Problem: Flere av klassene i et program er ganske like,har felles deler. Må disse delene skrives flere steder ? Ikke: Skrive klasse som er summen ave-egenskapene, teste med statusbit etc. hva som nå er tilfellet. Eks: Bankkonti lønnskonto, honnørkonto og høyrentekonto har mye felles Løsning: subklasser Skriv først felles del som egen klasse

26 26 public class konto { String navn, adresse; int saldo, rentefot,kontonummer; } class lønnskonto extends konto { String arbeidsgiver; int arbeidsgiver_nummer; } class høyrente extends konto { int ant_årlig_uttak; }.... Et objekt av class lønnskonto vil bestå av to deler: alt definert i 'konto' og i tillegg alt definert i 'lønnskonto' Flere nivåer av arv mulig: konto lønnskonto selvstendig næringsdrivende høyrente ansatt offentligansattprivatansatt Et objekt av typen ‘privatansatt’ inneholder da alle deklarasjoner (data+funksjoner) i konto, lønnskonto, ansatt og privatansatt eks Bankkonti

27 27 Multippel arv EKS. Ferdige klasser for a) statistikk (class stat) b) være med i køer (class kø) c) grafisk brukergrensesnitt (class grafikk) Vi ønsker alle disse i vår class bil (i C++) -ikke mulig i Java class bil : public stat, kø, grafikk {.... }; I Java kan vi gjøre noe lignende med grensesnitt: class bil implements stat, kø, grafikk {.... }

28 28 a) som arv: Verktøyboks-tankegangen ved ferdig definerte systemklasser (vanligst) b) ved stadig utbygging av fellesdeler i egne klasser (klassifikasjon dvs.generalisering og spesialisering) Ikke definer ikke for mange nivåer, det er ofte en dårlig klassifikasjon (medfører også mye blaing i koden) Når bruker vi subklasser ?

29 29 II. Virtuelle metoder public class konto { int saldo,......; public int beregn_renter () {..'vanlig renteberegning'...} public void årsoppgjør () {.. saldo = saldo + beregn_renter(); } class honnør extends konto {... public int beregn_renter () {... 'beregn renter etter honnør- måten' } Redefinering av operasjoner Eks: Renteberegning Alle kontotyper unntatt honnørkonti beregner renter på samme måte

30 30 Tomme virtuelle Eks: Grafiske brukergrensesnitt  Definerer en rekke virtuelle metoder som:  Mouse_button_down();  Key_down();  Disse kalles i systemklassene, men gjør da ingenting  Vi kan skrive våre versjoner av disse virtuelle metodene, og sørger da for at våre brukerdefinerte handlinger blir kalt istedenfor, i systemklassene.  Dette er systemets måte å la programmereren gripe inn i systemets (predefinerte) operasjoner  Tilsvarende i Visual Basic, DCOM/ActiveX Controls

31 31 Når bruker vi virtuelle metoder a) Til redefinering av egne metoder i egendefinerte klasser ( som: beregn-renter( ) dette er ikke veldig vanlig ) b) Til redefinering av ferdigskrevne systemklasser gripe inn i systemklassenes oppførsel. (ganske vanlig og mer vesentlig enn a) )

32 32 Objektorienterte begreper, oppsummering  Abstraksjon (hva det modellerer)  Innkapsling (skjuler implementasjon)  Modularisering (oppdelingen av problemområdet)  Hierarki (subklasser/arv)  Gjenbruk (subklasser /virtuelle metoder)  Typing (skille mellom objekter av ulike klasser, metoder og ulike dataelementer)  Prosess-egenskap (passiv, aktiv, parallellitet)  Persistent (overlever i en database)


Laste ned ppt "1 ObjektOrientert Systemutvikling del I Arne Maus, førsteamanuensis, Inst for informatikk, Univ. i Oslo (tidl: Univ i Tromsø, Norsk Regnesentral, MYCRON,"

Liknende presentasjoner


Annonser fra Google