729G06 Föreläsning 1 Objektorienterad programmering



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

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

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

Objektorienterad programmering

Programmering, grundkurs

Programmering grundkurs

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

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

Imperativ programmering. Föreläsning 4

Objektorienterad programmering. Grundläggande begrepp

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Imperativ programmering

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

Objektorienterad programmering

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

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

Sätt att skriva ut binärträd

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

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Classes och Interfaces, Objects och References, Initialization

Programmeringsteknik II

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

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

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

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

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

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

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

TDDE44 Programmering, grundkurs

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

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

Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

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

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

SKOLFS. beslutade den XXX 2017.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Objektorienterad programmering, allmänt

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

Design av en klass BankAccount som representerar ett bankkonto

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Introduktionsmöte Innehåll

Laboration 1 - Grunderna för OOP i Java

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

1 Klasser och objektorientering Vad är objektorientering?

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Föreläsning 1: Introduktion till kursen

Välkomna till DIT012 IPGO

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor

Abstrakta datatyper Laboration 2 GruDat, DD1344

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

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

Föreläsning 1: Intro till kursen och programmering

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Introduktion till kursen och MATLAB

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

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

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

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Artificiell Intelligens Lektion 4

Objektorienterad programmering i Java I

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Föreläsning 15: Repetition DVGA02

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Facit Tentamen TDDC (7)

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

DD1361 Programmeringsparadigm Föreläsning 1: Intro

TDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices

Föreläsning 1: Intro till kursen och programmering

Malmö högskola 2007/2008 Teknik och samhälle

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

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

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

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

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

Övningsuppgift. Repeterbara citat. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

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

Objektorienterad Programmering (TDDC77)

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

Transkript:

Översikt Formalia Vad är objektorienterad programmering 729G06 Föreläsning 1 Objektorienterad programmering Definieria klasser Skapa och använda objekt Annika Silvervarg Ciltab, IDA, Linköpings universitet 1 2 Kursupplägg Kursinnehåll 4 Föreläsningar 3 laborationsförberedande lektioner i PUL (Lab1+2+4) 1 laborationsförberedande lektion i Sal (Lab3) 2 projektförberedande lektioner 5 tillfällen/lab (1-2 utan handledare) 10 tillfällen till projektet (3 utan handledare) Fö 1: Introduktion till objektorienterad programmering Fö2: Objektorienterad programmering ipython, klassdiagram, undantag, introduction till ärvning Fö 3: Ärvning, överskuggning, komplexa objekt, klassdiagram Lektion 1: Principer för objektorienterad analys och design Lektion 2: Genetiska algoritmer Fö 4: Händelsedriven GUI-programmering Fö 5: Introduktion till projektet, Objektorienterad design i projektet 3 4 Examination Programmering 4 labbar ipar, 1hp (U/G) Enskiltprojekt, 2hp (U/G/VG) Följande ordinarie inlämningsdatum gäller för laborationerna i kursen: Mån v 16 kl 8.00 Mån v 18 kl 8.00 Mån v 20 kl 8.00 Mån v 21 kl 8.00 Kompletteringsdeadline för laborationer: 2015-06-05 Kompletteringsdeadline för projektet och uppsamlingstillfälle för laborationer: 2015-08-14 Uppsamlingstillfälle för projekt: 2015-09-25 Däreftergörs labserienom när kursen ges VT 16 Labassistenternarättar de labbar som skickats in till ett inlämningsdatum inom 10 arbetsdagar Bara har EN chans att komplettera! Skicka bara in laborationer som är kompletta! VG på projektetoch VG på logikenkrävs för att VG på kursen Programmeringsparadigm Programmeringsparadigm är en övergripandeteorieller fundamentalt arbetssätt kring hur program bör organiseras och struktureras språkoberoende aktiva och levande samtidigt (till skillnad från paradigm i vetenskapsfilosofiska sammanhang) lämpar sig olika bra för olika domäner och problem Exempel på programmeringsparadigm: Funktionell programmering Procedurell programmering Logik-programmering Objektorienterad programmering 5 6 1

Objektorienterad programmering Används i industrin Används som bas för stora projekt C++, Objective-C och Java är exempel på andra objektorienterade programmeringsspråk Abstraktion Att modellera ett problem och representera problemet Fokusligger intepåimplementationsdetaljerutanpåattskapaen meningsfull representation av problemet I funktionella och imperativa språk används ofta abstrakta datatyper som en abstraktionsmodell ADT (Abstrakt DataTyp) = datastruktur + funktioner 7 8 Varför räcker inte ADT:er? Det finns ingen hård koppling mellan data och dess funktioner -olika data kan skickas till alla funktioner vilket kan orsaka fel och buggar. Exempel Två abstrakta datatyper: bokochperson (t ex om vi vill skapa ett bibliotekssystem) Alla funktioner ligger på samma nivå: create_book(), create_contact() borrow_book(), return_book(), change_address() etc. Detärupp till programmerarenatthålla redanpå attingenkanlåna en kontakt, ellerbyta adresspåen boketc. 9 10 Objektorienterad programmering (OOP) Objekt istället för abstrakt datatyp Objektet ärifokus jämförtmed funktioner i fokus som vid funktionell programmering Man försöker relatera data och funktioner (= metoder) till objekt Objekt = Egenskaper + Beteenden (vadobjektet kangöraochvadman kangöramed objektet) Objekt, egenskaper och beteenden Klassens namn egenskaper beteenden 11 12 2

Objekt, attribut och metoder Objekt, attribut och metoder Klassens namn attribut age name metoder 13 14 Semiotiska triangeln(ogden & Richards 1923) I objektorienterad programmering Klass Variabel/ Referens Objekt 15 16 Klasser och objekt/instanser En klassären mall, en beskrivning avnågot somkan finnasivärlden. En klass beskriver vilka egenskaper (attribut) klassen har och vilka beteenden (metoder) den har Detsomfinnsivärldenärinstanser avklasser, även kallade för objekt, dessa kan lagras i variabler Objekt, egenskaper och beteenden age name 17 18 3

Definition av en klass Konstruktorer: Att skapa objekt av en klass Anropa klassens konstruktor, den speciella metod som skapar instanser av en klass Konstruktorn heter samma sak som klassen För klassen heter alltså konstruktorn () Konstruktorer "returnerar" nya objekt (returnerar egentligen inte, men man kan tänka så) 19 20 Vi skapar några hundar hund1: age: 0 name: Pluto (modul.)objekt.variabel (modul.)objekt.metod() a = [12, 3] a.append(4) Punktnotation hund2: age: 0 name: Lassie s = "hejsan" s.upper() 21 22 Testar hundarna Ändra värden hund1: age: 4 name: Pluto hund2: age: 8 name: Lassie 23 24 4

Testar hundarna metoden str () Metoden str ()berättar för python att hur instanser av klassen ska representeras som text Om den inte är definierad returneras en beskrivning av objektets typ samt var i minnet den finns t.ex. '< main.test instance at 0x101c1d290>' Om man definierar str ()kan man bestämma hur objekt av en klass ska representeras som sträng 25 Exempel på str Några ord om getters/setters Det "pythonska" sättet att koda är att inte använda getters/setters. Dock är getters/setters vanliga i många objektorienterade språk och ett bra sätt att kapsla in/gömma data i syfte att göra det lättare att omfaktorera kod (t ex byta datatyp från lista till dictionary) Man använder hund1.get_name() istället för hund1.name, och hund1.set_name( Fido ) istället för hund1.name = Fido (även inne i klassens metoder!) Getter och Setter för Objektorienterad systemutveckling Vad? Objekt består av egenskaper (attribut) och beteenden (metoder) Klasser är generella/abstrakta mallar och Instanser specifika objekt i världen Varför? Hur? Bra sätt att modellera många verkliga domäner och problem Underlättar modularisering, att designa och underhålla stora system OO Analays Förstå domänen och problemet, identifiera objekt OO Design Designa klasser och hur de relaterar till varandra OO Programmering Implementera klasser och instanser 29 30 5