Presentation laddar. Vänta.

Presentation laddar. Vänta.

Objektorientering användningsområden, speciellt olika programspråk

Liknande presentationer


En presentation över ämnet: "Objektorientering användningsområden, speciellt olika programspråk"— Presentationens avskrift:

1 Objektorientering användningsområden, speciellt olika programspråk
OOMPA 2000 Föreläsning 14 Objektorientering användningsområden, speciellt olika programspråk Innehåll Objektorientering olika användningsområden En kort översikt Olika programmeringsspråk Några exempel på olika oo-språk Uppbyggnad, likheter, särarter Något om distribuerad OO-programmering

2 Objektorientering olika användningsområden
Programspråk Här kom ideerna till och är fortfarande ”störst” på oo Mjukvarukonstruktion Strukturering och modellering sker naturligt med oo Databaser OO databaser ofta mer naturliga och ibland bättre än andra Artificiell intelligens Relativt enkelt att beskriva komplexa skeenden och förlopp med oo Gränssnitt Många system för gränssnittskonstruktion är oo Operativsystem Intresset för oo finns hos många som utvecklar operativsystem Distribuerade system Många system för distribuerad programmering är oo

3 Objektorientering Världen modelleras från vad den består av snarare än från dess funktion Data och beteende nära sammanhållet Polymorfi Inkapsling Arv Fördelar ...

4 Programmeringsspråk Objektorientering har i huvudsak utvecklats i samband med utvecklande av programspråk och programmeringstekniker Två huvudtyper av oo språk statiskt typade "den skandinaviska skolan" efter framförallt Simula och Beta dynamiskt typade Trend att oo programmeringsspråk används och krävs i allt större utsträckning i industrin

5 Simulering... Med simulering menas i allmännhet tekniken att representera ett dynamiskt system med en modell genom experiment med modellen vinner man sedan information om systemet Två typer Tidsstyrning, den simulerade tiden stegas fram med konstanta steg, modelldata uppdateras för varje tidssteg Händelsestyrning, förändringar approximeras med vissa händelser. Vid varje händelse uppdateras berörda modelldata.

6 ... Simulering (forts) En orsak till det första objektorienterade språkets tillkomst, SIMULA, var att man önskade simulera komplexa förlopp I SIMULA finns det också inbyggda stöd för att simulera olika företeelser Huvudprincipen är pseudoparallell exekvering, där objekt sammanförs till processer Varje objekt förstår meddelanden som wait, hold, activate Objektorientering och simulering passar (som väntat) väldigt bra ihop Det finns också en hel del stöd för simulering i Smalltalk Det finns bla en hel del specialdesignade simuleringsklasser (ingår dock inte längre i "standardleveransen") Om inte annat är det enkelt att konstruera eget

7 Grafiska gränssnitt Grafiska gränssnitt är i någon mening objektorienterade dom består av grafiska komponenter som både har ett utseende och ett beteende Med oo tekniker konstrueras enkelt ramverk ("frameworks") och gränssnittsbyggare som gör det enkelt att utveckla grafiska applikationer Idag är dom flesta gränssnittsbyggare oo-baserade Smalltalks med bla VisualWorks, VisualSmalltalk, VisualAge Java med VisualAge, Parts, Symantec C++ NeXT Delphi ....

8 Analys/design Som vi har sett är oo analys- och designmetoder mer och mer dominerande på marknaden Med sitt naturliga sätt att modellera världen utgående från objekt istället för funktion och den stora aktiviteten inom oo kan vi förvänta oss att oo analys och design kommer bli ännu mer dominerande Flera företag jobbar också med oo utveckling, både internt och i organiserad form som i OMG, med bla förslag på standard för analys och design UML är föreslagen som OMG-standard Stora projekt genomförs också ofta med oo tekniker många EU-projekt använder UML eller liknande

9 Databaser (DB) Traditionella databaser passar ganska bra när datastrukturerna är relativt statiska Om applikationerna är data och processintensiva har inte riktigt relationsmodellen passat. Exempel ingenjörsdesign CAD/CAM På senare år har ett stort intresse för objektorienterade databaser uppvisats Dessa databaser strävar efter att erbjuda de fördelar som oo språk ger inkapsling, polymorfi, beteende, arv, mm

10 DB Exempel Idag finns många oo databaser på marknaden Gemstone O2
baserat på Smalltalk. Påminner i funktion om en Smalltalkimage med GC mm. Kan integreras fullt ut med VisualWorks. Finns gränssnitt mot C++, C, Ada, Pascal, Objective C, Fortran, Java, mfl. Kan (inkapslat) hantera relationsdatabaser O2 ONTOS ObjectStore Versant C++, Smalltalk ORION

11 DB Prestanda I relationsdatabaser lagras data i tabeller, vilket kräver en omvandling vid översättande till programspråk. Tester har visat att en ODBMS i vissa situationer kan vara 100 ggr snabbara än en relations DBMS (tex US Navy testade read respektive write i Versant och DB2). Catell mfl gjorde tester med att sätta in och plocka ut poster i flera olika OO- och relationsdatabaser OO databaserna var ca 30 ggr snabbare Mer interaktiva problem med kontinuerlig uppdatering av databasen verkar lösas bättre med OO lösning än en relationsdatabaslösning En oo DB brukar använda lokala cachar.

12 Editorer Många editorer modelleras med fördel mha av objekt. Därför är det också naturligt att konstruera dem med oo tekniker Ritverktyg Skrivverktyg CASE CAD/CAM

13 Multimedia Att hantera olika media kan vara komplext. Vi måste hantera
hårdvara nätverk komplexa tillämpningar omgivningar, olika plattformar, bibliotek olika format, standards, integration av "gammal" mjukvara icke temporala respektive temporala data Med oo tekniker kan vi strukturera komplexiteten Vissa hävdar tom att OO nästan är en nödvändighet för att lyckas i större omfattning (Gibb och Tsichritzis) Idag finns frameworks för multimedia NeXTStep, Andrew Toolkit, Gibb och Tsichritzis,

14 Analys och design OO-baserade analys- och designtekniker är i dag så gott som standard Från OMT, ObjectOry till OMG-standarden UML Fördelen med dessa tekniker jämfört med icke oo-baserade är bla att dom är naturliga, ligger nära problemen, anpassningsbara, modulära, återanvändbara

15 Struktur och mönster Intresset för s.k. Design patterns har under 90-talet accelererat Man försöker beskriva och återvinna goda och framgångsrika lösningar, eller mönster klassificera dessa mönster så att dom skall bli lättillgängliga skapa en kraftfull vokabulär Objektorientering passar speciellt bra för sådana aktiviteter Metod "introspektion" (av framgångsrika system) traditionell OO design/analys standardiserade mallar

16 Operativsystem Idag implementeras operativsystem ofta med oo tekniker och språk I framtiden kommer troligen också mer objektorienterade stöd erbjudas direkt åt användarna tex Java kommer (enligt rykten) byggas in i vissa OS Kravet på distribution och att arbetet inom detta fält främst drivs inom oo kommer också troligen leda till objektorienterade operativsystem OO operativsystem fanns egentligen redan på 70-talet Smalltalk!

17 Artificiell intelligens
Forskare inom artificiell intelligens är attraherade av objektorienterad programmering Man kan beskriva komplex kunskap på ett konceptuellt ellegant sätt Agenter Icke autonoma Halvautonoma Autonoma

18 Wegner ger oss anledning att forsätta med OO
Man behöver kanske inte vara så extrem som Peter Wegner som: Med bland annat stöd från Fred Brooks som säger att interaktiv programmering i stort inte är detsamma som uppskalad algoritmisk programmering samt den begränsade uttrycksfullheten hos Turingmaskiner hävdar Peter Wegner att dom objektorienterade och distribuerade paradigm är mer uttrycksfulla än andra och därmed också överlägsna Han argumenterar länge för varför objektorientering är överlägsen både funktionell- och logikprogrammering, speciellt i interaktiva och distribuerade system.

19 Inbäddade komponenter
Inkorporerande av objekt i andra objekt tekniker för att låta olika tillämpningar samverka (i tex ett gemensamt dokument) genom att låta objekt skapade med en tillämpning "kopplas" in i "främmande" dokument applikationerna offentliggör gränssnitt. Kan därför kommunicera Exempel OLE (Microsoft), OpenDOC baserat på SOM/DSOM (IBMs CORBA-implementation)

20 Distribution Distribution är ett område av allt större betydelse
Objektorientering spelar en viktig roll i utvecklingen OMG, Object Management Group, är ett icke kommersiellt standardiseringsorgan med väldigt många deltagare (både kommersiella och icke kommersiella)

21 Komponentbaserad arkitektur
Objekt kan skapas i en applikation och sedan flyttas till en annan objektet behåller en koppling till ”sitt urspung” objektet kan editeras ”på plats” i sin nya omgivning Applikationer kan publicera hela eller delar av sitt gränssnitt Exempel Microsofts COM/ActiveX, OLE JavaBeans VisualWorks subcanvas (inom VW-systemet dock)

22 Olika oo-programspråk
Kodexempel i appendix med Cooks artikel Simula Först, baserat på Algol Införde klasser, polymorfi, dynamisk bindning mm Smalltalk Spred idéerna, har stått modell för många andra oo-språk, klassbibliotek och designmönster Korta utvecklingscykler, snabbt att prototypa eller göra "refactoring" Virtuell Maskin Som tolkar tänkt maskinkod eller snarare översätts med JIT-teknik Vissa dialekter plattformsoberoende Metaklasser, reflexivt, öppet, anpassningsbart

23 ... oo-språk ... CLOS Objective-C C++ Eiffel Lispbaserat
Multipelt arv, metaklasser, reflexivt, öppet, anpassningsbart Objective-C Blandning av C och Smalltalk (en hybrid) C++ Baserat på C, med influenser från Simula Multipelt arv Generiska typer templates Eiffel Mutipelt arv Invarianter, pre- och postvillkor

24 ... oo-språk Java C# (C-sharp) Som ju alla känner till Syntax som C
Påminner i uppbyggnad om Smalltalk VM JIT Standardiserat klassbibliotek C# (C-sharp) Microsofts nya språk C/C++-syntax liknar Java ganska mycket Kompileras till exekverbar kod Inget eget klassbibliotek Se Min temporära Adress!

25 Objekten eller värden Är allt objekt eller inte?
Simula, Java, Eiffel och C# har två typer av värden: referenser till objekt och värden Smalltalk har bara en typ, dvs allt är objekt CLOS integrerar objektsystemet så långt det är möjligt med underliggande Common Lisp C++ och Objective-C stöder C-värden + en ny domän av separata objekt I Objective-C finns det dock bara en typ i objektdomänen I C++ är denna objektdomänen mycket rikare Svaren på tavlan eller genom att du fyller i själv

26 Klasser och instanser Hör alla objekt till klasser
Ja, i alla dom jämförda språken tillhör objekten klasser I CLOS kan man också specificera beteende på instansnivå (Cook s. 150) Svaren på tavlan eller genom att du fyller i själv

27 Arv Vilka typer av arv finns? Enkelt arv i: Simula Java Smalltalk C#
Objective-C Beta ... Multipelt arv i: C++ Eiffel CLOS (Smalltalk) Svaren på tavlan eller genom att du fyller i själv

28 Referenser till sig själv
Hur sker referenser till aktuellt objekt? Simula - this Java - this Smalltalk - self C# - this Objective-C - C++ - this Eiffel - Current CLOS – går ej I Simula, Smalltalk, Java, C# och Eiffel är självreferensen reserverat ord Svaren på tavlan eller genom att du fyller i själv

29 Typsystem Har språket typsystem? När sker typkontrollen?
Hur uttrycksfullt är typsystemet? Skiljer man på typer och klasser? Inte statiskt i Smalltalk eller CLOS. Inte för objekt i Objective-C. Resten har statisk typning Svaren på tavlan eller genom att du fyller i själv Under exekveringen i Smalltalk och CLOS. Resten kontrollerar detta vid kompilering Eiffel och C++ har parameteriserade typer I CLOS är det inte samma sak men i resten är det i princip det

30 Objektinitiering Hur initieras objekten då dom skapas?
Simula - initieringsblock Java - konstruktor Smalltalk - klassmetod C# - konstruktor Objective-C- klassmetod C++ - konstruktor Eiffel – Create-feature CLOS – ”slots” med regler för initiering Svaren på tavlan eller genom att du fyller i själv

31 Inkapsling, omgivning och döljande
I vilken textuell kontext kan variabler och metoder accessas? Kan man explicit kontrollera omgivningen? Simula skiljer ej på publika och privata vilket C#, Java och C++ gör I Smalltalk och Objective-C är det ”stark” skillnad CLOS: slots som kan anges hur dom kan accessas Eiffel: export feature Svaren på tavlan eller genom att du fyller i själv Man kan ofta komma runt reglerna om man är expert på run-time-omgivningen I Smalltalk och CLOS är detta explicit inbyggt I Java finns också sådana möjligheter

32 Metoder, bindning och polymorfi
Tillhör metoderna objekt eller separata enheter? Kan metoder skrivas över? Har språket virtuella metoder? Svaren på tavlan eller genom att du fyller i själv

33 Styrstrukturer Är styrstrukturer inbyggda i språket eller via primitiver på lägre nivå? Vilka möjligheter att skapa egna styrstrukturer finns det? Svaren på tavlan eller genom att du fyller i själv I Smalltalk är styrstrukturer implementerade med vanliga objekt tillhörande vanliga klasser I resten av språken är det mer eller mindre primitiver CLOS har dock möjligheter från sitt ”LISP-arv”

34 Parallellitet Exekverar objekt parallellt?
Simula - Ja Ej i resten även om visa stöder processer Svaren på tavlan eller genom att du fyller i själv

35 Meta-programmering Hur kan språkets fundament kommas åt från program?
Finns metaklasser eller andra metaobjekt? I Java, Smalltalk och CLOS går detta I Smalltalk och CLOS är detta helt integrerat Svaren på tavlan eller genom att du fyller i själv I Smalltalk är klasser objekt precis som allt annat i systemet. Klasserna i sin tur är instanser av klasser (som är objekt som är instanser av klasser som....) Varje klass tillhör en metaklass

36 Omgivning Vilken omgivning krävs för att konstruera och leverera kod?
Svaren på tavlan eller genom att du fyller i själv Java kräver VM Finns dock en del ”riktiga” kompilatorer Smalltalk kräver också VM Här jobbar man också i en speciell omgivning och kodning innebär att den aktuella omgivningen modifieras Vissa Smalltalksystem har dock ”riktig” kompilator Resten av språken kräver ingen speciell omgivning (fast i CLOS var detta inte specat då Cook skrev sin artikel)

37 Implementation Är språket intepreterande eller kompilerat?
Finns det automatisk skräpsamling? Java och Smalltalk kan vara intepreterande men normalt JIT CLOS ej definierat Reten kompilerande I Simula, Smalltalk, CLOS, Eiffel, Java och C# finns automatisk skräpsamling

38 Modularitet Vilken grad av modularisering finns? Filer Klass Package
Svaren på tavlan eller genom att du fyller i själv

39 Felhantering Hur hanteras run-time-fel? Eiffel har exceptionhantering
Simula, Eiffel och C++ är från början konstruerade med intentionen att run-time-fel ej sker Eiffel har exceptionhantering Java, C# och Smalltalk har exceptionhandling Även C++ numera Objective-C följer C-traditionen Svaren på tavlan eller genom att du fyller i själv

40 Metodologi Är språket specialicerat på att konstruera någon speciell typ av applikationer? Svaren på tavlan eller genom att du fyller i själv

41 Något om distribuerad OO-programmering
På separata ej upptryckta ohs, se websidorna med oh-bilder.


Ladda ner ppt "Objektorientering användningsområden, speciellt olika programspråk"

Liknande presentationer


Google-annonser