Imperativ programmering. Föreläsning 4



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

Objektorienterad programmering. Grundläggande begrepp

Objektorienterad programmering

Imperativ programmering

Objektorienterad programmering, allmänt

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

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

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

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

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

Objektorienterad programmering

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Klasshierarkier - repetition

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

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

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

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Programmering för språkteknologer II, HT2011. Rum

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

Programmering för språkteknologer II, HT2014. Rum

Laboration 1 - Grunderna för OOP i Java

Objektorienterad Programmering (TDDC77)

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

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

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

Introduktion till arv

Objektorienterad programmering

Objektorienterad programmering

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Arv. Objektorienterad och komponentbaserad programmering

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

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java

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

Classes och Interfaces, Objects och References, Initialization

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Programmering B med Visual C

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

729G06 Föreläsning 1 Objektorienterad programmering

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

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Imperativ programmering. Föreläsning 2

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

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

TDDC76 - Programmering och Datastrukturer

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

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

Objektorienterad Programmering (TDDC77)

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

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Tentamen i Grundläggande programmering STS, åk 1 fredag

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

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

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

JAVA Mer om klasser och objektorientering

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Föreläsning 15: Repetition DVGA02

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

TENTAMEN OOP

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

TDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

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

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

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Transkript:

Imperativ programmering 1DL126 3p Föreläsning 4

Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering Prototypbaserad programmering Konceptorienterad programmering Aspektorienterad programmering Attributorienterad programmering... och så vidare...

OOP Procedurell programmering bryter ner ett problem till en samling datastrukturer och procedurer. Objektorienterad programmering bryter ner problemet till objekt som innehåller data och kod. Båda metoderna fungerar lika bra - det är bara olika sätt att tänka.

OOP Procedurell programmering - Programmet är en lista av instruktioner. Objektorienterad programmering - Programmet är ett antal objekt som samarbetar. Objekten kan ses som fristående maskiner med var sin given uppgift. Objekten kommunicerar med varandra genom att skicka meddelanden.

OOP Slår samman flera gamla tekniker. Arv, modularitet, polymorfism, inkapsling Formulerades på 60-talet men slog inte igenom förrän på 90-talet. Restriktivt tankesätt - förbjuder fulkod Kräver mer av hårdvaran Kräver avancerade tekniker för kompilering, minneshantering m.m. Hårdvarupris vs. Utvecklingskostnad

OOP Simula var det första språket som använde koncepten som bygger OOP. (objekt, klasser, subklasser, virtuella metoder, automatisk minneshantering) Detta som en utbyggnad av Algol. Smalltalk var det första språket som kallades objektorienterat.

OOP Syftet är att skapa program som är mer flexibla och lätta att underhålla. Stark betoning på modularitet. Tydlig koppling mellan program och verklighet gör programmet lätt att förstå för de som inte programmerar själva. UML - Generera kod.

Terminologi OOP metoder klasser meddelande medlem klassvariabel Procedurell procedurer / funktioner moduler anrop variabel / funktion global variabel

Viktiga termer Klass Arv Objekt Inkapsling Metod Abstraktion Meddelande Polymorfism

Klass En abstrakt beskrivning av en sak. Beskriver egenskaper och förmågor. Exempel: Klassen Bil Antal dörrar Hastighet Färg Förmågan att gasa / bromsa Förmågan att tuta...

Klass Erbjuder modularitet och struktur. Ska vara lättförståelig - andra än programmerare ska kunna förstå vad det är och vad den kan göra. Ska vara 'self-contained' - Allt som behövs för dess funktion ska finnas i klassen.

Objekt Ett specifikt föremål - en instans - som är byggt enligt en klass. Klassen Bil beskriver alla möjliga bilar - WWB829 är en specifik bil - en instans. Bilar har en färg - WWB829 har färgen grå.

Metod Ett objekts förmågor implementeras med metoder (jfr. funktioner). En bil kan tuta, den har alltså en metod som heter tuta(). Ett anrop till en metod ska endast påverka ett objekt. Alla bilar kan tuta - men när vi tutar i vår bil ska endast den tuta.

Meddelande Används när ett objekt vill att ett annat objekt ska agera, eller för att skicka information från ett objekt till ett annat. I Java: Metodanrop.

Arv Bygger ut - specialiserar - en klass. VW är en speciell typ av bil - klassen VW ärver från klassen Bil. 'Är'-relation Fordon Lastbil Bil... SAAB EZH025 VW WWB829

Inkapsling Dölja implementationen. Allt data är privat och åtkomstmetoder används för att sätta eller plocka ut. Ger ett rent gränssnitt och gör det lättare att uppdatera koden. private, protected, public Java: package C#: internal, VB.NET: Friend C++ & Eiffel: Speca vilka klasser

Abstraktion Använd alltid en så abstrakt nivå som möjligt när ni refererar till objekt i koden. I de flesta sammanhang kan WWB829 betraktas som en Bil. En parkeringsplats... pplats.parkera(bil b) Hos VW-försäljaren... affären.sälja(vw ny)

Polymorfism Polymorfism = Överlagring Möjligheten för en metod att operera på olika typer av indata. heltal + heltal, flyttal + flyttal Bil.tanka(Blyfri drivmedel) Bil.tanka(Diesel drivmedel) Bil.tanka(RH5 drivmedel)

Java Språk med stöd för objektorienterad programmering. En (publik) klass per källkodsfil. Filnamn = klassnamn. Automatisk minneshantering.

Java Oak Java Java 1.1 Java 1.2 = Java 2 Java 2 1.2.x Java 2 1.3.x Java 2 1.4.x Java 2 1.5.0 = Java 2 5.0 = Java 5.0 Java 6.0

Java public class Tomte { int ålder; String namn; boolean skägg; Instansvariabler (= egenskaper) } public Tomte(int å, String n) { ålder = å; namn = n; skägg = true; }

Java public class Tomte { int ålder; String namn; boolean skägg; Konstruktor } public Tomte(int å, String n) { ålder = å; namn = n; skägg = true; }

Java Java i praktiken

Obligatorisk uppgift Skriv ner det viktigaste / det du minns bäst från dagens föreläsning