Objektorienterad programmering
|
|
- Leif Pettersson
- för 8 år sedan
- Visningar:
Transkript
1 Objektorienterad programmering Emil Ahlqvist Didrik Püschel Johan Hammarström Hannes Frimmel Moström 1
2 1. Introduktion 1.1 Objektorienterad Programmering 1.2 Historia 2. Abstrakta datatyper 2.1 Abstraktion 3. Information hiding 3.1 Om Information Hiding 4. Message passing 4.1 Definition 4.2 Anvädning 4.3 Funktion Exempel: Java Exempel: Smalltalk 4.5 Framtiden 5. Arv 5.1 Programkodsåteranvändning 5.2 Definition av arv 5.3 Överskuggade metoder 5.4 Enkelt respektive multipelt arv 2
3 1. Introduktion 1.1 Objektorienterad Programmering Objektorienterad programmering är en programmerings paradigm där program kan betraktas som en uppbyggnad och interaktioner av objekt. Definition Objekt Klass En samling av substantiv som representerar data(attribut) och verb(metoder) som representerar funktioner En konstruktion som kan skapa instanser av sig själv. En klass representerar oftast ett substantiv, en instans av en klass kallas objekt. 1.2 Historia Det första framträdande av objektorienterad som det används i modern mening var i sent 50 tal och tidigt 60 tal i MIT då i sammanhang av forskning av artificiell intelligens. Objekt som ett formelt koncept introducerades under 60 talet av Simula 67, ett språk designat för händelsestyrd simulering. Simula introducerade klasser och instanser av klasser som en del av en programmerings paradigm. Programmeringsspråket Smalltalk utvecklat under 70 talet introducerade termen objektorienterad programmering för användning av objekt och messaging (see 4.) som basen för beräkningar. Smalltalk och OOP blev introducerade till en bredare publik 1981 via en artikel i Byte Magazine. Objektorienterad programmering blev dominant i början till mitten av 90 talet då programmeringsspråk med stöd för OOP blev allmänt tillgängliga. En bidragande orsak för OOP dominans var populariteten av GUI som bygger OOP tekniker. Exempel C++. På senare tid har språk utvecklats som är huvudsaklingen objektorienterade men har stöd för imperativ programmering därför att det är effektivare vid beräknigar av primitivare datatyper. Exempel Java. 3
4 2. Abstrakta datatyper 2.1 Abstraktion (Tomt) 4
5 3. Information hiding 3.1 Om Information Hiding Information Hiding är Abstraktion, med den grundläggande iden att avändaren inte ska kunna komma åt data, snarare än som det varit tidigare, då programeraren helt enkelt var tvungen att hoppas att användaren inte ändrar eller rör data utan givna funktioner. Detta har nu ändrats till det att i många språk är det helt enkelt inte möjligt att röra vid data direkt utan att programmeraren har gjort detta möjligt, då detta inte är default. Information Hiding är faktiskt äldre än OO, olikt arv och message passing. Detta då problemet med användare som petar runt i data de inte borde vara i har varit ett problem nästintil sedan saker och ting började. För att kämpa mot detta har man gjort många olika trick för att försöka komma runt detta, till exempel förkompilerade sub program och header files för att kunna använda dem. Detta lade grunden till OO, och då arv och message passing arbetades in så var OO ett faktum. 5
6 4. Message passing 4.1 Definition Message Passing har två olika betydelser, beroende på situationen och vem det är som talar. Den första betydelsen är en mer idealistisk syn på OO programmering, där Objekt frågar varandra saker och de svarar. I denna version är alla objekt oberoenda av varandra. Detta är dock endast en idealistisk syn, då detta skulle kräva en tråd per objekt, och detta är inte praktiskt möjligt än. Den andra betydelsen är den mer praktiska som inte är baserad på utopia utan vad some praktiskt sker i verkligheten. I denna version är Message Passing inte mer än ett dynamiskt sätt att anropa funktioner. I detta dokument kommer vi endast att referrera till denna mer praktiska betydelse, då den idealistiska kan bli mycket viktig i framtiden men för tillfället inte har mycket faktisk användning. Mer om detta senare. 4.2 Anvädning Message Passing används mer eller mindre endast i relation till Arv, då arv är omöjligt utan Message Passing, medans det i sig själv har begränsad användning och helt enkelt inte är praktiskt att implementera utan arv. På grund av detta så används inte Message Passing till mer än detta, och kan ses som en del av Arv. 4.3 Funktion Hur fungerar då Message Passing? Detta beror naturligtvis på språket och direct implementation, och vi kommer här att visa två översiktliga exempel. Det bör noteras att vi inte kommer att gå i exakt detalj på implementation, då detta är mindre viktigt, och alla exempel som ges kommer att vara oerhörda förenkligar med ett pedagogiskt syfte, och bör inte tas som sanningar för hur saker och ting fungerar rent praktiskt. Vad är då Message Passing? Förenklat kan man säga att varje objekt har en lista med sina funktioner. När en funktion ska anropas går man igenom denna lista fram till dess att man hittar funktionen, alternativt kan säga att funktionen inte existerar i objektet. Om den inte finns så går sökandet vidare i föräldra klasser, fram till dess att man med säkerhet kan säga att funktionen inte finns i det arv trädet. Om en funktion inte finns måste detta hanteras exempel på detta finns längre ner i kapitlet. På grund av detta är Message Passing mycket långsammare än imperativ programering, det spelar ingen roll hur mycket språket är optimerat, det är helt enkelt så mycket mer som behöver göras för varje program anrop. I sin renaste form är också Message Passing ett fulständigt runtime baserat, där funktioner kan 6
7 skapas och tas bort medans programmer kör, och Exempel: Java Ett exempel på ett språk med Message Passing är Java. Medans Java har möjligheten att avända Message Passing fullt ut är detta inte default, utan måste göras med hjälp av Reflection ett specifikt bibliotek för att göra just detta. Det normala sättet för java är en halv version av normal message passing, då mycket av det som normalt görs vid runtime är gjort vid compile. Detta är mestadels type checking och liknande, samt att java garanterar att alla funktioner finns ett program kan inte kompileras om inte alla funktioner finns implementerade. På grund av detta finns det inget fall då en funktion saknas, och sådant behöver man då inte oroa sig för. Man kan också notera att vissa primitiva datatyper, såsom boolean och int inte är object baserade och har inte Message Passing. Detta är på grund av att Message Passing inte är snabbt, och man har gjort avvägningen att i dessa fall är hastigheten viktigare än att ha allt OO Exempel: Smalltalk Ett av de språk som är känt för dess strikta användning av OO och Message Passing är Smalltalk. Detta språk implementerar ett fullständigt Message Passing, från ett Runtime type check för alla funktioner till det att allting är Objekt, till och med en int eller boolean. Detta gör att Smalltalk är oerhört enkelt att ändra i, och språket är gjort för att man ska kunna ändra i klasser i runtime utan att behöva kompilera om. En av de mer kända och använda IDEs använder detta och, då IDEn är skriven i Smalltalk, kan ändras under körning utan problem. Dock så kommer detta med en del problem, även om man ignorar den långsammare hastigheten. Detta är att det inte finns någon garanti för att en funktion finns, och man kan således få problem med detta. Smalltalk har en speciel funktion för detta, som kan överskuggas för att kunna göra saker och ting om en funktion saknas, såsom att försöka hitta den i ett annat objekt. 4.5 Framtiden Det är mycket svårt att säga vad framtiden kommer att hålla för Message Passing, dock så är det inte helt osannolikt att den utopiska versionen kommer att bli starkare då flerkärniga datorer är mer och mer populärt, vilket gör trådar inte bara mer praktiska, utan rent av ett måste. 7
8 5. Arv 5.1 Programkodsåteranvändning Under mitten till slutet på 1980 talet blev det uppenbart för många programmerare att en av de bästa möjligheterna för ökad produktivitet inom deras yrke var software reuse (programkodsåteranvändning). Abstrakta datatyper med deras inkapsling och accesskontroll fungerar väldigt bra för denna återanvändning. Problemet dock med återanvändningen av abstrakta datatyper är att i nästan samtliga fall så är de funktioner och egenskaper hos den existerande klassen inte helt rätt för de nya. Den gamla klassen kräver åtminstone någon eller några små ändringar. Sådana ändringar kan vara väldigt svåra att utföra, eftersom personen som ska göra dessa ändringar i många fall inte är programmets ursprungliga skapare och därför måste sätta sig in i större delen av, om inte all, kod. Förutom detta krävs även att dessa modifikationer måste utföras på flera ställen i koden.. Arv erbjuder en lösning på detta problem. Om en ny abstrakt datatyp kan ärva data och funktionalitet av någon befintlig typ, och också är tillåten att ändra på några av dessa enheter och lägga till nya enheter, underlättas återanvändningen avsevärt. Programmerare kan då med hjälp av arv använda en existerande abstrakt datatyp och forma den för att passa kraven för ett nytt problem. 5.2 Definition av arv Arv inom objektorienterad programming är, enkelt förklarat, när en klass kan härledas från en annan existerande klass. En klass som defineras genom arv från en annan klass kallas för barnklass eller subklass. Klassen som den nya klassen härleds från kallas för föräldraklass eller superklass. Inom objektorienterad programmering kan man använda sig av olika former av accesskontroll för t.ex. attribut och metoder i en klass. Förutom private och public finns även en tredje kategori, ofta kallad för protected. Protected används för att ge tillgång till attribut och metoder enbart till de härledda klasserna inom en arvshierarki, medan de undanhålls från andra klasser. 8
9 5.3 Överskuggade metoder En överskuggad metod hos en subklass har ofta samma namn och samma protokoll som föräldraklassens metod. Den nya metoden åsidosätter då metoden i föräldraklassen. Det vanligaste syftet med en överskuggande metod (engelska: overriding method) är att tillhandahålla en operation som är specifik för objektet av den härledda klassen, som inte är lämplig för objekt av föräldraklassen. Tänk er att vi har följande klasshierarki. En klass som kallas Vehicle, vilken har attribut för tillverkningsår och färg, samt en metod draw för att illustrera fordonet. Tänk er sedan att vi har en subklass Car till Vehicle som då ärver attributen och metoden draw från fordonsklassen, men där vi lägger till attribut för att beskriva motorkapacitet och antal hjul, samt överskuggar metoden draw från föräldraklassen för att kunna rita ut bilens särskilda utseende. Figur 1: Illustration över hur klassen Car ärver egenskaper från Vehicle, samt lägger till egna attribut specifika för en bil. 5.4 Enkelt respektive multipelt arv Om en klass är en subklass till en ensam föräldraklass kallas denna härledningsprocess för enkelt arv. När en klass däremot har mer än en föräldraklass kallas processen för multipelt arv. C++ och Eiffel är språk som stöder multipelt arv. Java och C# däremot använder sig av så kallade interfaces, som kan ses som en annan typ av multipelt arv. Ett interface kan formellt ses som en klass, men får inte innehålla egen kod. All sådan kod måste istället ligga i klasser som implementerar interfacet. Även fast multipelt arv kan vara väldigt användbart stöds det inte av alla objektorienterade programmeringsspråk. Anledningen till detta beror på att användandet av multipelt arv lätt kan leda till komplexa program. Många som försöker använda sig av multipelt arv har upptäckt att designen av de klasser som skall användas som multipla föräldrar ofta är svåra att implementera. En annan nackdel som uppstår är att det blir svårt för kompilatorn att lägga ut effektiv kod för detta. 9
10 Ett klassiskt exempel som illustrerar varför multipelt arv inte används i de flesta objektorienterade språk kan visas med hjälp av varselsen Kentaur från den grekiska mytologin, som är hälften häst och hälften människa. För att uppnå den önskade effekten är det lägligt att använda sig av multipelt arv och låta klassen Centaur dra nytta av egenskaperna från både en klass som beskriver en häst och en klass som beskriver en människa samtidigt. Den praktiska användningen av multipelt arv visar på svårigheterna, främst för programmeraren att överblicka effekterna av koden. Om vi fortfarande tänker oss Kentaurexemplet: om både klassen Horse och klassen Human ärver från en klass Mammal. Då kommer Centaur att innehålla två instanser av Mammal, modifierade på lite olika sätt av Horse respektive Human. Alltså kan vissa operationer bli oklart definierade, eller framförallt svåra att överblicka. Detta scenario kallas för ett diamantproblem. Figur 2: Illustration av kentaur exemplet. Vilket nämndes ovan stöder C++ multipelt arv genom att tillåta mer än en klass att vara förälder till en ny klass. Kodexemplet nedan visar hur arvshierarkin för Centaur kan implementeras. class Mammal { }; class Human : public Mammal { }; class Horse : public Mammal { }; class Centaur : public Human, public Horse { }; Klassen Centaur ärver i exemplet ovan alla egenskaper från Human och Horse, samt de redan ärvda egenskaperna från superklassen Mammal. Om både Human och Horse råkar inkludera egenskaper med samma namn, kan de otvetydigt refereras i objekt av klassen Centaur genom att använda scope resolution operatorn som finns i C++. 10
Imperativ programmering. Föreläsning 4
Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering
Läs merObjektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo
Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till
Läs merObjektorienterad programmering. Grundläggande begrepp
Objektorienterad programmering Grundläggande begrepp Hur beskriver vi objekt? Vill ha en representationsoberoende beskrivning Abstrakta datatyper! Data Operationer Objekt Representerar en verklig eller
Läs merObjektorienterad programmering, allmänt
Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara
Läs merViktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet
Läs merOOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
Läs merTENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.
Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:
Läs merTentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.
Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel
Läs merArv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Läs merIntroduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Läs merObjekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15
DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd
Läs merÖvningar Dag 2 En första klass
Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt
Läs merF8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
Läs merVem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
Läs merFöreläsning 15: Repetition DVGA02
Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras
Läs merJava-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }
Föreläsning 3 Arv Kategorisering Stora program leder till många klasser (tänk liknelsen med en affär med många varor). Att dela in saker i kategorier är en vanlig strategi för att hantera stora komplexa
Läs merFöreläsning 3.1: Datastrukturer, en översikt
Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,
Läs merInnehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och
Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält
Läs merUML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
Läs merFöreläsning 13 Innehåll
Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?
Läs merCoridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter
Datavetenskap Opponenter: Daniel Jansson Mikael Jansson Respondenter: Mats Almgren Erik Hansen Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter Oppositionsrapport,
Läs mer"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde
Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande
Läs merFöreläsning 10. ADT:er och datastrukturer
Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad
Läs merHistorik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga
Historik: OOP Simula-67 Norge, 1967 Byggde på Algol-60, avsett för simulering Garbage collection, arv, klasser (inte olikt Java) Smalltalk, Alan Kay, Xerox, 70-tal Introducerade begreppet objekt-orienterad
Läs merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Läs merObjektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del
Läs mer2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
Läs merObjekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar
Klassbegreppet och C++ OOP UML Klasser och objekt i C++ Uppdelning i filer Attribut och metoder Inkappsling - åtkomst Klassattribut - objektattribut Objekt-orienterad programmering Att använda ett objektorienterat
Läs merProgrammering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller
Läs merArv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
Läs merRedovisning av inlämningsuppgifter
Bilaga B Redovisning av inlämningsuppgifter 1 Rapportens innehåll Varje inlämningsuppgift ska redovisas med en skriftlig rapport. Rapporten ska vara häftad och försedd med ett försättsblad med uppgiftens
Läs merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =
Läs merNallelek Lärarvägledning
NALLELEK - LÄRA MERA PROGRAM AB Nallelek Lärarvägledning NALLELEK... 2 1.1 Programmet... 2 1.2 Övningar som stärker förmågan att iaktta bilder och se detaljer... 3 1.2.1 Pedagogiska tips... 3 1.3 Kategorisering
Läs merTDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G90 Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Arv Polymorf UML (klassdiagram) 1 Arv Möt tre studenter
Läs merEnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass
Övningstillfälle 4 Klasser och objekt (s. 221 ff.) Syfte 1: En naturlig fortsättning på koncepten abstraktion och inkapsling! Funktion (återanvändning av skyddad, säker och testad kod) Modul (återanvändning
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,
Läs merPlaneringsspelets mysterier, del 1
Peter Lindberg Computer Programmer, Oops AB mailto:peter@oops.se http://oops.se/ 28 februari 2002 Planeringsspelets mysterier, del 1 Om jag ska spela ett sällskapsspel för första gången så vill jag att
Läs merTDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer
TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 1 Introduktion Variabler och typer Objektorienterad programmering fk 1 Föreläsning 1 Olika nivåer av programdesign Det är användbart
Läs merIntroduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder
Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i
Läs merObjektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Läs merClasses och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Läs merKlasshierarkier - repetition
Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet
Läs merFöreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Läs merOOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
Läs merObjektorienterad programmering
Objektorienterad programmering Föreläsning 19 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Konstruktion av egna grafiska komponenter Kontsruktion av egen komponent Att rita upp
Läs merArv och klassbibliotek
Arv och klassbibliotek Johan L Larsson Uppsala Universitet/KTH November 1999 jola@csd.uu.se 1 Klasser och objekt Car instantiates particularcar jola@csd.uu.se 2 Introduktion till arv Problem med modifikation
Läs merProgrammering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42
Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser
Läs merIdag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Läs merFöreläsning 7. Grafiska användargränssnitt
Föreläsning 7 Grafiska användargränssnitt För att göra grafiska användargränssnitt: Måste man veta hur man skapar komponenterna i ett GUI och vilka det finns. Till lab 3 räcker det med att känna till de
Läs merObjektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim
Objektorienterad programmering Föreläsning 12 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Introduktion till Arv Superklasser och Subklasser Dolda medlemmar (new och base) Statisk
Läs merMålen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1
Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan
Läs merOOMPA 2D1359 Föreläsning 2
OOMPA 2D1359 Föreläsning 2 Objektorienterad Modellering Programmering och Analys Objektorientering grunder l Vad är OO? Programspråk?, paradigm?, gränssnitt?, struktur?, eller? l Termer och fundament Objekt,
Läs merLaboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
Läs merStatic vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018
Static vs Dynamic binding Override vs Overload Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018 Quiz: Gissa typen? Object o = new Square(100,100); Polygon p =
Läs merAnalys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram
Analys och design med hjälp av CRC 83 Klassdiagram Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt,
Läs merObjektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Läs merFöreläsningsmaterial (Arv) Skrivet av Andreas Lund
Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Inledning Arv är ett begrepp som är tätt förknippat med objektorientering. Principerna bakom arv är grundade i högst vardagliga relationer mellan olika
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut
Läs mer725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack
725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den
Läs merOOP Objekt-orienterad programmering
OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort
Läs merSätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
Läs merDAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
Läs merObjekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018
Objekt-orienterad programmering och design DIT953 Niklas Broberg, 2018 Kursteamet Niklas Broberg kursansvarig, föreläsare, examinator Johannes Åman Pohjola föreläsare Assistenter: Karin Wibergh Sarosh
Läs merUML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
UML Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Unified Modelling Language Grafiskt modelleringsspråk för att beskriva olika aspekter av objektorienterade system. Vi kommer
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Överlagring (overloading) Arv
Läs merProgrammering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.
Programmering Seminarier i datavetenskap, datorteknik och informationsteknik Niklas Broberg niklas.broberg@chalmers.se 2015-09-24 Hur många från Datavetenskap? Datateknik? Informationsteknik? Översikt
Läs merTentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2008-08-14 Tid: 08-12 Plats: PC6-PC7 i E-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna varje
Läs merObjektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Läs merKopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Läs merDigitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch
Digitalt lärande och programmering i klassrummet Introduktionsworkshop - Bygg ett akvarium i Scratch Introduktion Scratch är en programmeringsomgivning utvecklad av forskare på Massachusetts Institute
Läs merTentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl
Läs merUML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.
Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel
Läs merProgrammering = modellering
Programmering = modellering Ett datorprogram är en modell av en verklig eller tänkt värld. Ofta är det komplexa system som skall modelleras I objektorienterad programmering består denna värld av ett antal
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Läs merLaboration 1 - Grunderna för OOP i Java
Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben
Läs merIntroduktion av aktiv generaliserad kunskap i Businss Process Support System (BPSS)
Introduktion av aktiv generaliserad kunskap i Businss Process Support System (BPSS) - en teknisk rapport om regelsystem i en state-flow-miljö kallad ProBis Version 0.2 En process från ett state-flow perspektiv
Läs merObjektorienterad programmering, analys och design med Java, 5p 2D4135, vt 2006. Kursprogram
Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt 2006 Kursprogram Kursens mål är att ge dig kunskaper om begreppen och principerna inom objektorienterad programmering kunskaper
Läs merArv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).
3 Arv och gränssnitt 3.1 Vad innebär arv? Ett objektorienterat språk bygger på att programmeraren ges möjligheten att modellera verkligheten med hjälp av objekt. Objekt låter sig definieras i form av klasser.
Läs merSubklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).
Läs merTDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G91/2 Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Ett större exempel på OOP Objektorienterad Analys (OOA)
Läs merOutline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator
Läs merObjektorienterad programmering
Objektorienterad programmering Aletta Nylén http://user.it.uu.se/~aletta Epost: aletta.nylen@it.uu.se Rum: 1216 Kursinfo Lärare: Aletta Nylén Jesper Wilhelmsson Litteratur: Object-Oriented Software Development
Läs merFörsättsblad till skriftlig tentamen vid Linköpings Universitet
Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2016-03-21 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal
Läs merClasses och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Läs merMer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML
Målet Mer OOP Mer om klasser Några exempel UML Modularitet Språkligt modulära enheter Få gränssnitt Små gränssnitt Tydliga gränssnitt Dold information Återanvändbarhet Variation i typer Variation i datastrukturer
Läs merMajor Release 3.1. Vad innebär Major Release 3.1 för svenska användare?
Major Release 3.1 Vad innebär Major Release 3.1 för svenska användare? Agenda Vad förändras och vad innebär det? Förändringarna i detalj Dokumentation Sammanfattning Vad förändras och vad innebär det?
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Introduktion HT2 Åtkomst Abstrakt datatyp UML Överlagring
Läs merProgrammering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Läs merInterface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010
Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public
Läs merF9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander
F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt
Läs merObjektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Läs merOutline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Att instansiera en klass Objekt I Man instansierar (skapar
Läs merObjektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)
Objektorienterad programmering Föreläsning 8 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Objektorienterad programutveckling Algoritmer Algoritmkonstruktionerna Relationer
Läs merFöreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul
Föreläsning 8 Programmeringsteknik och Matlab DD1312 er, Self Metoderna:, av metoder, Det är en metod som tillhör klassen och inte objektet. class Skylt(object): antal=0 def init (,r):.reklam=r def antal():
Läs merObjektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015
Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora
Läs merFöreläsning 9: Arv och UML
TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;
Läs merAbstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser
Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta
Läs merKonstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
Läs mer