Objektorienterade programmeringsspråk. Vad vill vi ha? Några olika språk

Relevanta dokument
Objektorienterade programmeringsspråk. Grundalgoritm Mark and sweep. Garbage Collection (GC) Olika GC-strategier

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Objektorienterad programmering

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objektorienterad programmering

Objektorienterad programmering

Classes och Interfaces, Objects och References, Initialization

Imperativ programmering. Föreläsning 4

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

F2: Krav på objektorienterat språk

Objektorienterad programmering

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Inledande programmering med C# (1DV402) Introduktion till C#

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Imperativ programmering. Föreläsning 2

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Objektorienterad programmering. Grundläggande begrepp

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Föreläsning 3: Booleans, if, switch

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

Ingenjörsfirman Stéen Java Sida 1 av 1

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

JAVAUTVECKLING LEKTION 1

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

TDDC76 - Programmering och Datastrukturer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

Introduktion till programmering. Programspråk och paradigmer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

F4. programmeringsteknik och Matlab

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Objektorienterad Programmering (TDDC77)


Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC77 Objektorienterad Programmering

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Arv Murach s: kap 14

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Generics och polymorfism. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Programmering i C++ EDA623 Något om C# EDA623 (Föreläsning 14) HT / 17

Föreläsning 10. ADT:er och datastrukturer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

OOP. vs procedural programming Design av interaktiv multimedia

Arv. Objektorienterad och komponentbaserad programmering

Dynamisk bindning och polymorfism

Klassdeklaration. Metoddeklaration. Parameteröverföring

endast har ett korrekt alternativ. Om

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Föreläsning 15: Repetition DVGA02

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen Grundläggande programmering

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

OOP Objekt-orienterad programmering

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Objektorienterad Programmering (TDDC77)

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

Transkript:

Objektorienterade programmeringsspråk Vad vill vi ha? Några olika språk

7 steps towards object-based happiness 1. (Object-based modular structure) Systems are modularized on the basis of their data structures. 2. (Data abstraction) Objects should be described as implementations of abstract data types. 3. (Automatic memory management) Unused objects should be deallocated by the underlying language system, without programmer intervention. 4. (Classes) Every non-simple type is a module, and every highlevel module is a type. 5. (Inheritance) A class may be defined as an extension or restriction of another. 6. (Polymorphism and dynamic bindings) Program entities should be permitted to refer to objects of more than one class, and operations should be permitted to have different realizations in different classes. 7. (Multiple and repeated inheritance) It should be possible to declare a class as heir to more than one class, and more than once to the same class.

Garbage Collection Stor källa till fel i program: Minnesläckage Avreferera felaktiga pekare Lösning: automatisk minneshantering. Systemet deallokerar oanvända objekt utan programmerarens inverkan. GC minskar den tid och kraft som spenderas på programmering, testning och debugging Tidskrävande ej för realtidssystem (ex spel)

Simula en objekt-orienterad utvidgning av Algol 60, ursprungligen avsett för simulering. Simulas viktigaste arv till eftervärlden är inte simuleringsprincipen, utan att språket visade värdet av att kunna strukturera objektorienterat Introducerade klasser, objekt, arv, dynamisk bindning

Simula: Språket Värdetyper (int, real, ) och referenser till objekt Skilda operationer för värdetyper och referenser := vs :-, = vs ==, /= vs =/=, etc Enkelt arv Inkapsling ursprungligen ingen senare protected = osynlig för klienter Virtuella metoder Olika implementationer kan ha olika signatur Polymorfism Statisk bindning utom för virtuella metoder GC

Simula: Klassdefinition Parametrar Attribut (kan vara klasser) Metoder Life

Simula - programexempel Class Rectangle (Width, Height); Real Width, Height;! Class with two parameters; Begin Real Area, Perimeter;! Attributes; Procedure Update;! Methods (Can be Virtual); Begin Area := Width * Height; Perimeter := 2*(Width + Height) End of Update; Boolean Procedure IsSquare; IsSquare := Width=Height; Update;! Life of rectangle started at creation; OutText("Rectangle created: "); OutFix(Width,2,6); OutFix(Height,2,6); OutImage End of Rectangle;

Vad är det för fel på Simula? Simula anses vara det första objektorienterade språket men används inte speciellt mycket. Varför?

Vad är det för fel på Simula? Generally: Born in a small European country Frozen in 1968 Expensive Does not have a modern IDE Too complicated Not enough publications Language features: Limited file access facilities (typed files) Missing data types (records, sets) No advanced parallelism and real time support No GUI support Long executable files for short programs OOP features: No multiple inheritance No interfaces Simulation: No automatic collection of statistics No report generator No useful specialized facilities (resources)

Smalltalk Togs fram vid Xerox PARC under 1970- och 1980-talet Skapade begreppet objektorienterat Mycket av dagens terminologi (Javas rekommenderade regler för namngivning) Avsikten: att bygga ett kraftfullt informationssystem som kunde växa och förändras I takt med användarens idéer och önskemål Grunden för många framsteg för datoranvändning, t ex Gränssnittskonstruktion (fönsterhantering, ikoner för val på bildskärm, pop-up menyer) Integrated Development Environmnet (IDE) Plattformsoberoende via användandet av Virtuell Maskin (VM) Just In Time Compiling (JIT) redan 1983 Design Patterns Används fortfarande inom bla Webteknologi XP

Smalltalk: Språket Dynamiskt typat Dynamisk bindning Allt är objekt även klasser! Enkelt arv alla klasser ärver Attribut dolda, metoder kan exporteras Syntax Sex reserverade ord (nil, true, false, self, super, thiscontext), Femton specialtecken ([] {}_^;$#:.-()) Tre sätt att skicka meddelanden (unära, binära och nyckelord).

Smalltalk: klassdefinition NameOfSuperclass subclass: #NameOfClass instancevariablenames: instvarname1 instvarname2 classvariablenames: ClassVarName1 ClassVarName2 pooldictionaries: category: name of category

Smalltalk - programexempel Object subclass: #TransientBeing instancevariablenames: 'birthday ' classvariablenames: '' pooldictionaries: '' category: 'SmalltalkIdioms-Being!!TransientBeing methodsfor: 'accessing'! age ^Date today year - self birthday year! birthday ^birthday!

C++ Imperativt programmeringsspråk med stöd för dataabstraktion, objektorienterad programmering och generisk programmering. Utvecklades i början på 1980-talet av Bjarne Stroustrup vid Bell Labs. Bygger på C med idéer från Algol 68 och Simula Är ett av de mest populära programmeringsspråken och används för programmering inom allt från spel till konsumentelektronik.

C++: Språket Ingen GC Explicit call-by-reference Överladdade operatorer Multipelt arv Virtuellt arv Templates generiska funktioner/klasser

The deadly diamond of death int i f() B int i f() A D int i f() C

Java Hette från början OAK (James Gosling, 1991). Utvecklades vid SUN Microsystems. Från början avsett för inbyggda system (tex tvättmaskiner, mobiltelefoner, TV/video, spel, mm). (Storlek och pålitlighet var viktiga) Med WWW fick projektet en annan inriktning Java blev ett programspråk för webapplikationer

(Man brukar säga att) Java är... enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart robust, säkert oberoende av hårdvaruarkitektur (portabelt) web-anpassat: applets, div bibliotek

.NET En plattform centrerad kring en Common Language Runtime, CLR (jmf JVM), och en samlig bibliotek Kan nyttjas av ett antal språk som kan samköra genom att de kompilerar till ett intermediate language (MSIL)

C# (C-sharp) utvecklat av Microsoft i samband med skapandet av den nya.net-plattformen. Standariserat 2001. C# är ett (strikt) objektorienterat språk bygger på C/C++ med starka influenser av Java. Kompileras till MSIL och körs på CLR I CLR lever objekten i skyddade miljöer som kallas Application Domains. Kommunikationen mellan objekt i olika Application Domains kan ske väldigt effektivt, i synnerhet om dessa finns i samma process på samma fysiska dator.

C# och Java ( C++) Kompilerar till maskinoberoende kod som körs i kontrollerad omgivning (abstr. maskin) GC tillsammans med borttagande av pekare (I C# finns begränsad användning av pekare i kod som markerats unsafe ) Inga header-filer eller problem med cirkulära beroenden Alla klasser ärver från object Enkelt arv + multipelt interface arv Inga globala funktioner, konstanter

Properties: Getters och Setters Java/C++ C# public int getsize() { return size; } public void setsize (int value) { size = value; } foo.setsize (getsize () + 1); label.getfont().setbold(true); public int Size { get {return size; } set {size = value; } } foo.size++; label.font.bold = true;

C# - fler nyheter Indexers Delegates Events Enum Collections + foreach Structs Primitiva typer som structar Operator överladdning Virtuella metoder override Interface Call-by-reference, out -parameter, params Switch även strängar, inget break Pekararitmetik i unsafe -metoder

C# Finesser: GC Helt objekt-orienterat, ALLT är objekt - även primitiver Stöder multi-dimensjonella arrayer. Operator överladdning XML kan läggas direkt i en struct istället för i en klass, medför större effektivitet. foreach statement I C# är alla objekt COM objekt. Mindre bra: Mindre dynamiskt än Java. Använder C++ stil på namn break och continue kan inte ha label. Metoder är inte virtuella default (som i Java) Dålig säkerhet? Ingen template-mekanism

Språk Simula Smalltalk Eiffel C++ Java C# GC Polymorfism Dynamisk bindning Arv Multipelt arv Statiskt typat N N* N N N N** N** * Dynamisk bindning för virtuella metoder ** Interface ger begränsad form