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

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Atomer och kemiska reaktioner
Domarassistenten.com - en introduktion för domare
Demokrati.
Relationsdatabasdesign
Avalon Information Systems Vi är IT-företaget som behärskar framtagning av information och utveckling av konkurrenskraftiga IT-system. - Produktinformation.
Datavetenskapens roll. Datavetenskap •Vad är datavetenskapens roll i kognitionsvetenskapen?
Frågor Allmän IT-kunskap avsnitt 1 kapitel 1 Repetition 4
Mjukvara och nätverk Vad är det?.
1 Docentföreläsning. Torsdag 8 oktober 1998 Programvaruteknik - en ingenjörsdisciplin ? Campus Norrköping ITN Bengt Lennartsson kl. 15:29.
Klasser och objekt.
Next previous XP: varför fungerar det? Något om tentan. Innehåll Introduktion till eXtreme Programming (XP) Varför fungerar XP? Något om tentan Vad ska.
Leif Håkansson’s Square Dancer Rotation
Objektorienterad Realtidsprogrammering
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
Redovisning av drogvaneundersökning åk 7-9 Strömsunds kommun 2010
Next previous Refactoring och lite mönster kodade i Java Innehåll Vad är refactoring? Ett större refactoringexempel Några mönster kodade i Java OOMPA 2000.
Föreläsning 1.
IT och kommunikationsvetenskap Teresa Cerratto Pargman, DSV
Arv.
Inkapsling.
Objektorienterad tänkande
Polymorfism.
Välkommen Vahid Mosavat
Att programmera i språket Java
LANDSTINGSDIREKTÖRENS STAB Regional utveckling BILD 1 Resultat av enkät till landstingspolitiker
Svenska WebDewey Introduktion
Modellering med UML
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
Java. Kortfattat om Java Syntaxen påminner i hög grad om C++ Stöd för objektorientering Kod kan köras i en virtuell maskin som finns tillgänglig för nästan.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
Fastighetsbyrån Konjunkturundersökning Oktober 2012.
EN KOMPLETT INDUSTRIPARTNER ! ALLMÄNT OM MELSEC STYRSYSTEM.
Programmering B PHP Lektion 2
Introduktionskurs för användare Del 1
Svenska WebDewey Introduktion Harriet Aagaard Svenska Deweyredaktion
Programmering i C# 3. Klasser.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
Vektorer (klassen Vector) Sortering
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
1. En infrastruktur för programutveckling
Barnets rättigheter i Sverige och för alla barn i världen
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Next previous Mjukvaruprocessen: översikt och repetition. XP: problemformulering. JUnit. Innehåll Allmännt om utvecklingsprocesser från Bruegge kapitel.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Barnets rättigheter i Sverige och för alla barn i världen
Objektorientering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Mahmud Al Hakim 2  Mål för kursen  Kursplanering  Kurslitteratur  Betygsättning  Grunder om databaser  Tabeller.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
OpCon/xps - A case study. Club2200Page 1 OpCon/xps – A case study Club2200 Magnus Nyman & Hans Forslind.
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
Presentation of I. Name: Disputerat nu vår Forskningsintresset är:
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
Presentationens avskrift:

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

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

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 ...

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

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.

... 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

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 ....

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

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

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

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.

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

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,

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

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

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!

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

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.

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)

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)

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)

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

... 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

... 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 http://www.nada.kth.se/kurser/kth/2D1359/00-01/contents/clangref.doc Min temporära Adress!

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

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

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

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

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

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

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

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

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”

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

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

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)

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

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

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

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

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