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
previous
next
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
2
Objektorientering användningsområden, speciellt olika programspråk
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
– ...
– ...
– ...
previous
next
3
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
4
Objektorientering användningsområden, speciellt olika programspråk
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.
previous
next
5
Objektorientering användningsområden, speciellt olika programspråk
... 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
previous
next
6
Objektorientering användningsområden, speciellt olika programspråk
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
– ....
previous
next
7
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
8
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
9
Objektorientering användningsområden, speciellt olika programspråk
DB Exempel
• Idag finns många oo databaser på marknaden
– Gemstone
• 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
previous
next
10
Objektorientering användningsområden, speciellt olika programspråk
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.
previous
next
11
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
12
Objektorientering användningsområden, speciellt olika programspråk
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,
previous
next
13
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
14
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
15
Objektorientering användningsområden, speciellt olika programspråk
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!
previous
next
16
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
17
Objektorientering användningsområden, speciellt olika programspråk
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.
previous
next
18
Objektorientering användningsområden, speciellt olika programspråk
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)
previous
next
19
Objektorientering användningsområden, speciellt olika programspråk
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)
previous
next
20
Objektorientering användningsområden, speciellt olika programspråk
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)
previous
next
21
Objektorientering användningsområden, speciellt olika programspråk
Olika oo-programspråk
• Simula
– Först, baserat på Algol
Kodexempel
i appendix med
Cooks artikel
– 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
previous
next
22
Objektorientering användningsområden, speciellt olika programspråk
... oo-språk ...
• CLOS
– 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
previous
next
23
Objektorientering användningsområden, speciellt olika programspråk
... oo-språk
• Java
–
–
–
–
–
–
Som ju alla känner till
Syntax som C
Påminner i uppbyggnad om Smalltalk
VM
JIT
Standardiserat klassbibliotek
• C# (C-sharp)
–
–
–
–
–
previous
next
Microsofts nya språk
Min temporära
C/C++-syntax liknar Java ganska mycket
Adress!
Kompileras till exekverbar kod
Inget eget klassbibliotek
Se http://www.nada.kth.se/kurser/kth/2D1359/0001/contents/clangref.doc
24
Objektorientering användningsområden, speciellt olika programspråk
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
Svaren
på tavlan
eller genom
att du fyller i
själv
• 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
previous
next
25
Objektorientering användningsområden, speciellt olika programspråk
Klasser och instanser
• Hör alla objekt till klasser
• Ja, i alla dom jämförda språken tillhör objekten klasser
Svaren
på tavlan
eller genom
att du fyller i
själv
previous
• I CLOS kan man också specificera beteende på instansnivå
(Cook s. 150)
next
26
Objektorientering användningsområden, speciellt olika programspråk
Arv
• Vilka typer av arv finns?
• Enkelt arv i:
• Simula
• Java
• Smalltalk
• C#
• Objective-C
• Beta
• ...
Svaren
på tavlan
eller genom
att du fyller i
själv
• Multipelt arv i:
• C++
• Eiffel
• CLOS
• (Smalltalk)
previous
next
27
Objektorientering användningsområden, speciellt olika programspråk
Referenser till sig själv
• Hur sker referenser till aktuellt objekt?
• Simula - this
Svaren
på tavlan
eller genom
att du fyller i
själv
• 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
previous
next
28
Objektorientering användningsområden, speciellt olika programspråk
Typsystem
• Har språket typsystem?
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
• När sker typkontrollen?
Under exekveringen i Smalltalk och CLOS.
Resten kontrollerar detta vid kompilering
• Hur uttrycksfullt är typsystemet?
Eiffel och C++ har parameteriserade typer
• Skiljer man på typer och klasser?
I CLOS är det inte samma sak men i resten är det i princip det
previous
next
29
Objektorientering användningsområden, speciellt olika programspråk
Objektinitiering
• Hur initieras objekten då dom skapas?
• Simula - initieringsblock
Svaren
på tavlan
eller genom
att du fyller i
själv
previous
• Java - konstruktor
• Smalltalk - klassmetod
• C# - konstruktor
• Objective-C- klassmetod
• C++ - konstruktor
• Eiffel – Create-feature
• CLOS – ”slots” med regler för initiering
next
30
Objektorientering användningsområden, speciellt olika programspråk
Inkapsling, omgivning och döljande
• I vilken textuell kontext kan variabler och
metoder accessas?
Simula skiljer ej på publika och privata vilket C#, Java och C++ gör
Svaren
på tavlan
eller genom
att du fyller i
själv
I Smalltalk och Objective-C är det ”stark” skillnad
CLOS: slots som kan anges hur dom kan accessas
Eiffel: export feature
• Kan man explicit kontrollera omgivningen?
Man kan ofta komma runt reglerna om man är expert på run-timeomgivningen
I Smalltalk och CLOS är detta explicit inbyggt
I Java finns också sådana möjligheter
previous
next
31
Objektorientering användningsområden, speciellt olika programspråk
Metoder, bindning och polymorfi
• Tillhör metoderna objekt eller separata
enheter?
Svaren
på tavlan
eller genom
att du fyller i
själv
previous
• Kan metoder skrivas över?
• Har språket virtuella metoder?
next
32
Objektorientering användningsområden, speciellt olika programspråk
Styrstrukturer
• Är styrstrukturer inbyggda i språket eller via
primitiver på lägre nivå?
Svaren
på tavlan
eller genom
att du fyller i
själv
• Vilka möjligheter att skapa egna styrstrukturer
finns det?
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”
previous
next
33
Objektorientering användningsområden, speciellt olika programspråk
Parallellitet
• Exekverar objekt parallellt?
• Simula - Ja
Svaren
på tavlan
eller genom
att du fyller i
själv
previous
• Ej i resten även om visa stöder processer
next
34
Objektorientering användningsområden, speciellt olika programspråk
Meta-programmering
• Hur kan språkets fundament kommas åt från
program?
Svaren
på tavlan
eller genom
att du fyller i
själv
I Java, Smalltalk och CLOS går detta
I Smalltalk och CLOS är detta helt integrerat
• Finns metaklasser eller andra metaobjekt?
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
previous
next
35
Objektorientering användningsområden, speciellt olika programspråk
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)
previous
next
36
Objektorientering användningsområden, speciellt olika programspråk
Implementation
• Är språket intepreterande eller kompilerat?
Java och Smalltalk kan vara intepreterande men normalt JIT
CLOS ej definierat
Reten kompilerande
• Finns det automatisk skräpsamling?
I Simula, Smalltalk, CLOS, Eiffel, Java och C# finns automatisk
skräpsamling
previous
next
37
Objektorientering användningsområden, speciellt olika programspråk
Modularitet
• Vilken grad av modularisering finns?
Filer
Klass
Package
Svaren
på tavlan
eller genom
att du fyller i
själv
previous
next
38
Objektorientering användningsområden, speciellt olika programspråk
Felhantering
• Hur hanteras run-time-fel?
• Simula, Eiffel och C++ är från början konstruerade med
Svaren
på tavlan
eller genom
att du fyller i
själv
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
previous
next
39
Objektorientering användningsområden, speciellt olika programspråk
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
previous
next
40
Objektorientering användningsområden, speciellt olika programspråk
Något om distribuerad OO-programmering
• På separata ej upptryckta ohs, se
websidorna med oh-bilder.
previous
next
41