Objektorienterad Modellering Programmering och Analys

  • Published on
    10-Jan-2016

  • View
    43

  • Download
    4

Embed Size (px)

DESCRIPTION

OOMPA-1999 Frelsning 2. Objektorienterad Modellering Programmering och Analys. Objektorientering grunder Vad r OO? Programsprk?, paradigm?, grnssnitt?, struktur?, eller? Termer och fundament Objekt, klass, hierarki, arv, inkapsling, polymorfi, meddelande, metod, instans Scenarier - PowerPoint PPT Presentation

Transcript

<ul><li><p>Objektorienterad Modellering Programmering och Analys</p><p>Objektorientering grunder Vad r OO? Programsprk?, paradigm?, grnssnitt?, struktur?, eller? Termer och fundament Objekt, klass, hierarki, arv, inkapsling, polymorfi, meddelande, metod, instans Scenarier Fr att beskriva typiska och viktiga aktiviteter CRC-kort Teknik fr att beskriva och ta fram objekt, klasser och relationerOOMPA-1999Frelsning 2</p><p>- * -</p><p>Vad menas med att vara objektorienterad?Svaret beror p om frgan avser programsprk, anvndargrnssnitt, en tillmpning, en databas eller en analys och designmetod</p><p>Kategori</p><p>"Definition"</p><p>Vad r det byggt med?</p><p>C++, Smalltalk, Java. Grnssnittsbyggare. Kodgenerator. teranvndbara komponenter</p><p>Hur arbetar det?</p><p>Frgande snarare n berttande. Identifierande av enheter och sndande av meddelanden.</p><p>Vad behandlar det?</p><p>Abstraktioner som modellerar ett problem.</p><p>Hur r det strukturerat?</p><p>Moduler. Grundenheterna enkla att integrera. Generella beskrivningar av klasser av ting. Generalisering och specialisering, inkapsling, polymorfi, arv.</p><p>Vad mer kan man gra med det?</p><p>Systemet kan utvidgas med ndringar som propagerar ut ver systemet utan att dom behver dupliceras eller "frstra" icke relaterade delar </p><p>- * -</p><p>...Objektorienterat sprkBaseras p inkapsling, polymorfi och arvObjektorienterad anvndargrnssnittDelarna i grnssnittet r objekt/komponenterObjektorienterad tillmpning eller verktygndringsbara, teranvndbara och utvidgbara komponenterObjektorienterad databasRepresenterar, lagrar och terskapar objektmodellerObjektorienterad analys och designBestr av tekniker att hitta objekt, fr att strukturera relationer, eller hantera processen att skapa objekt.</p><p>- * -</p><p>Varfr objektorientering?Separerar grnssnitt frn implementationAvbildar vrlden p ett enkelt och naturligt sttObjekt frbereder system fr frndringObjekt tillter att (bara) delar av systemet fungerarAndra delar kan byggas klart senareObjekt r naturliga att teranvnda</p><p>- * -</p><p>Vad r ett objekt?Ett objektEn beskrivning av beteendeHar ett vldefinierat grnssnitt som specificerar beteendet oberoende av implementationen. Andra objekt kan interagera med objektet via det givna grnssnittet.Implementationen beskriver hur objektet skall reageraEtt objekt bestr avprivata delar, dolda och ej tkomliga av andra objektpublika delar, som r tkomliga fr andra objektEtt objekt instansieras frn en klassmyAccount = new Account();yourAccount = new Account();InkapslingmetodinstansKlass</p><p>- * -</p><p>Skicka meddelandenMeddelandesndningVi aktiverar ett objekt genom att skicka meddelanden till det</p><p>Vissa meddelanden kan ha argument</p><p>- * -</p><p>Sammansatta objekt och delegeringObjektsammansttningObjekt kan vara definierade mha andra objekten bil bil bestr av en kaross, en motor, en bensintank, drrar etc</p><p>dessa objekt kan i sin tur best av andra objekten drr bestr av ett handtag, ett fnster, ett ls, osv</p><p>Ett objekt som bestr av andra objekt kan delegera ansvar till dessa objektBilen delegerar ansvaret fr drrlsningen till drren som i sin tur delegerar detta till lset. Vi kan enkelt byta ls (frn tex mekaniskt till elektroniskt) utan att ndra varken bil eller drr.</p><p>- * -</p><p>delegereing..Ett PersonRegister delegerar tillett DictionaryMeddelandecentral delegerar tillett Kommunikationsobjekt som delegerar tillServerSocket och KlientSocketEn Person delegerar tillNamnobjekt och AdressobjektEn FigurGrupp delegerar utritning tillFigurer</p><p>- * -</p><p>sammansatt objektEtt annat exempel ren bild som bestr av linjer, rektanglar eller andra bilder</p><p>- * -</p><p>Vad r en klass?En klass r en beskrivning av en viss uppsttning av objekts attribut och beteendeattributen kallas fr instansvariablerbeteendet beskrivs med hjlp av metoder</p><p>instansvariabel</p><p>med initialvrde</p><p>operationer/meddelanden</p><p>return balance;</p><p>deposit(amount)</p><p>withdraw(amount)</p><p>transfer(amount, anotherAccount)</p><p>balance()</p><p>withdraw(amount);</p><p>anotherAccount.deposit(amount);</p><p>balance = balance +</p><p>amount;</p><p>Account</p><p>metoder</p><p>balance = balance amount;</p><p>balance = 0</p><p>- * -</p><p>Klasser ordnas i hierarkiersubklassernarver frn sinasuperklasser</p><p>Vehicle</p><p>start() </p><p>stop()</p><p>move()</p><p>Glider</p><p>Airplane</p><p>Car</p><p>GolfCart</p><p>Train</p><p>takeOff() </p><p>land()</p><p>AirVehicle</p><p>LandVehicle</p><p>- * -</p><p>MetodbindningMetod sks frst i mottagarens klass drefter i superklasser</p><p>airplane = new Airplane();airplane.start();1: sk i klassen2: sk isuperklassen3: fortstt i superklassenssuperklassHittas ingen metodi rotklassen s genereras ett felavbrott!</p><p>Vehicle</p><p>start() </p><p>stop()</p><p>move()</p><p>Glider</p><p>Airplane</p><p>takeOff() </p><p>land()</p><p>AirVehicle</p><p>- * -</p><p>ArvshierarkierI VisualWorks\Smalltalk hittar vi fljande klasshierarki (ett utsnitt)Object ()Magnitude () ArithmeticValue ()Number ()Fraction ('numerator' 'denominator')Integer ()LargeInteger ()LargeNegativeInteger ()LargePositiveInteger ()SmallInteger () Collection () SequenceableCollection ()OrderedCollection ('firstIndex' 'lastIndex')SortedCollection ('sortBlock')</p><p>- * -</p><p>...ArvshierarkierI Java-2 hittar vi fljande klasshierarki (ett utsnitt)java.lang.Object java.lang.Number java.lang.Integerjava.math.BigIntegerjava.lang.Longjava.lang.Shortjava.util.AbstractCollection java.util.AbstractSet java.util.TreeSet java.util.HashSet</p><p>- * -</p><p>Subklasser kan skriva ver metoderFrsk att hitta klassergenom att abstrahera gemensamt beteendeoch ordna dem hierarkisktgenom att lta klassersom r (eng. is-a) avviss underordnad typbli subklasser.</p><p>Exempel:Kvadrat r-en rektangel.Cirkel r-en ellips.</p><p>Shape</p><p>toString() :String</p><p>draw() : void</p><p>moveBy(distance) : void</p><p>extent : Point</p><p>toString() : String</p><p>draw() : void</p><p>toString() :String</p><p>draw() : void</p><p>Ellipse</p><p>position : Point</p><p>toString() :String</p><p>draw() : void</p><p>Square</p><p>Rectangle</p><p>extent : Point</p><p>toString() : String</p><p>draw() : void</p><p>Circle</p><p>return "Jag r en figur!"</p><p>//vi gr ingenting som default!</p><p>position.translate(distance.x, distance.y);</p><p>//vi gr ingenting som default!</p><p>return "Jag r en ellips i position " +</p><p>positon.toString();</p><p>primitiveDrawOval(postion, extent);</p><p>max = Math.max(extent.x, extent.y);</p><p>primitiveDrawOval(</p><p>new Point(max, max));</p><p>- * -</p><p>Polymorfi och verskrivningOlika klasser kan ha metoder med samma namn, s.k. polymorfir1 = new Rectangle(); // Instansiera klassen Rectanglec1 = new Circle(); // Skapa en instans av klassen Circle</p><p>/* Nu skickar vi meddelandet draw till bde r1 och c1 */r1.draw();c1.draw();</p><p>/* vilket ger olika resultat trots att vi skickar samma meddelande till bda objekten. Mottagaren "avgr" helt enkelt vad som skall hnda! */</p><p>- * -</p><p>Design och utvecklingVilken typ av projekt kan vara avgrande fr hur man gr tillvga Programmera i det lillakod skapas av en eller f programmerare. En enskild person kan ha verblick och vara insatt i alla delar av projektet.Huvudproblem (mjukvara): designa och utveckla algoritmer</p><p>Programmera i det storamjukvaran tas fram av ett stort team. Vissa personer kan specificera eller designa andra kan koda vissa komponenter, slutintegration/applikationen grs kanske av en tredje grupp, osv. Ingen person har mjlighet att stta sig in alla delar av projektet.Huvudproblem (mjukvara): hantera kommunikationen mellan olika delar av projektet.</p><p>- * -</p><p>Arbeta med scenarierIdentifiera viktiga delar av systemet</p><p>Beskriv dem med steg-fr-steg beskrivningar i vanlig textbeskriver hndelsefrloppbrjar och slutar p godtyckligt (/lmpligt) stlleinnefattar objekt, delsystem eller en blandning av dessaanvnds fr att beskriva dynamiken hos systemetanvnds fr att testa framtagna modelleranvnds fr att konstruera modellerkan anvndas vid verifiering av systemkan ocks utgra basen fr dokumentation av systemet</p><p>- * -</p><p>...Ofta hittar man scenarier genom att utg frn hur anvndaren skall interagera med systemetSenare kan man (kanske) hitta delscenarier och beskriva hur objekten interagerar med varandra</p><p>Exempel (Pelle i Pite skickar post till Olle i Ume)Pelle postar brevet i brevldan i PitePosten sorterasBrevet transporteras till posten i UmePosten sorterasBrevet delas ut</p><p>- * -</p><p>SekvensdiagramScenarier brukar beskrivas med sekvensdiagram och andra interaktionsdiagrampostasorteratransporterasorteradela ut</p><p>- * -</p><p>Dela upp p delkomponenterIdentifiera vad som skall gras och sedan vem som skall gra det</p><p>D man brjar f ngorlunda klart fr sig vad man skall konstruera r det dags att identifiera komponenter</p><p>Komponenterna (systemen) delas sedan upp p delkomponenter (delsystem)</p><p>Detta r ofta en brainstormingliknande iterativ process</p><p>- * -</p><p>TumreglerEn komponent skall ha en liten mngd vldefinierat ansvarndringar skall pverka s f som mjligt</p><p>En komponent skall interagera s lite som mjligt med andra komponenterAtt minska kopplingen (eng. coupling) mellan olika komponenter kar sannolikheten fr att ndringar gras med minimal inverkan p andra komponenter</p><p>- * -</p><p>CRC-kort (Class-Responsibility-Collaborators)Av Cunningham och Beck under mitten av 80-talet.Togs fram fr att lra ut objektorienterad programmeringFr att ge komponenter fysisk presentation</p><p>Bra vid brainstorming/spnandeProcess:Man skriver ner klasser p kort. Selektera inte nu utan skriv ner alla frslagEfter ett tag nr man har ett (tillrckligt) antal klasser vljer man ut dom bstaSedan gr man ver till att identifiera ansvarsomrden och beteende fr varje klassSedan identifieras samarbete klasser emellanMan frsker ocks ordna klasserna hierarkiskt samt identifiera abstrakta klasser</p><p>- * -</p><p>Ett blankt CRC-kortKlassnamnAnsvarSamarbetspartners</p><p>- * -</p><p>CRC: ExempelGrafiskt objekt som har en metod fr att rita "sin" figur och ett delobjekt som ocks skall ritas ut GrafisktObjektHller grafisk beskrivning i form av en en metod som beskriver den aktuella presentationenSkall kunna innehlla ett annat grafiskt objekt med samma API som det sjlvDet skall g att lgga in ett nytt eller ta bort det aktuella grafiska delobjektetVid utritning skall det grafiska objektet ocks se till att delobjektet ritas utGrafisktObjekt</p><p>- * -</p><p>- * -</p><p>CRC: Publicist och prenumerant</p><p>- * -</p><p>"Klassiska" MVC</p></li></ul>

Recommended

View more >