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

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

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

Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

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

Undantag, Sammanfattning och Tentamensinfo. Objekt-orienterad programmering och design Alex Gerdes, 2016

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

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

Generics och polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Kursplanering Objektorienterad programmering

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

Generic type declarations. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Föreläsning 1. Introduktion Utveckla för förändring. Grundkursen. Programming in the small. Koncept som är kända från grundkursen (?

Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Course Contents. Objektorienterad programmering. Goals. Buzzwords. Course overview (1) Book. Objektorienterad programmering d2. DAT050, 16/17, lp 2 1

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

Classes och Interfaces, Objects och References, Initialization

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

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

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

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

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

Undantag, Sammanfa,ning och Tentamensinfo. Objektorienterad programmering och design Alex Gerdes, 2018

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

Principer, Patterns och Tekniker. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

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

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Instuderingsuppgifter läsvecka 2

Principer, Pa+erns och Tekniker. Objekt-orienterad programmering och design Alex Gerdes, 2018

Principer, Patterns och Tekniker. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2016

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

TDDC77 Objektorienterad Programmering

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

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

Imperativ programmering. Föreläsning 4

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Objektorienterad programmering

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT15

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

Föreläsning 15: Repetition DVGA02

Introduktionsmöte Innehåll

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT14

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

Introduktion. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

Programmeringsteknik II

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

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Objektorienterad Systemutveckling Period 3

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

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

Ingenjörsfirman Stéen Java Sida 1 av 1

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

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT17

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Laboration 2: Designmönster

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

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 Programkonstruktion. Föreläsning jan 2016

Design Patterns Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

Föreläsning 1: Introduktion till kursen

Introduktion och OO. Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018

Information. Computer

Laboration 2: Designmönster

EDAA01 Programmeringsteknik - fördjupningskurs

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

Design och konstruktion av grafiska gränssnitt

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

Föreläsning 1: Introduktion till kursen

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

Föreläsning 1: Introduktion till kursen

Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design Alex Gerdes, 2018

Objektorienterad programmering

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

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

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

Viktiga programmeringsbegrepp: Kontrakt

Inkapsling (encapsulation)

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

Introduktion till Programmering. Dåtid, nutid och framtid

Objektorienterad programmering. Grundläggande begrepp

Model View Controller. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

Objektorienterad mjukvaruutveckling. 15 högskolepoäng. TentamensKod: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN)

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2

Akronymer. CD5130 OOP, fk. Mjukvarumönster. Mjukvarumönster. Mjukvarumönster, forts. Mjukvarumönster, forts

Kursplanering fo r HI1027, Objektorienterad programmering, P1 HT112

Transkript:

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 Nasir John Lindström Gidskehaug

Vad är objekt-orientering? objekt-orienterat språk? objekt-orienterat program? objekt-orienterad design?

Objekt-orientering är ett sätt att modellera en applikation i termer av kommunicerande objekt. Objekt-orienterad design är skapandet av modellen. Objekt-orienterad programmering är implementationen av modellen. Ett objekt-orienterat språk är ett programspråk med inbyggt stöd för att underlätta implementationssteget. Ett program skrivet i ett objekt-orienterat språk måste inte vara objekt-orienterat. Ett objekt-orienterat program måste inte implementeras i ett objektorienterat språk.

Objekt-orientering: process OO analys => OO design => OO programmering DIT212 Objekt-orienterat programmeringsprojekt (valbar år 2-3, lp4) DIT953 Objekt-orienterad programmering och design DIT012 Imperativ programmering med grundläggande objekt-orientering

Verktyg vs principer Ni har lärt er hur olika verktyg (i Java) fungerar. I den här kursen vill vi svara på frågor som när ska olika verktyg bör användas, varför de bör användas, och hur de bör användas bäst.

Från verktyg till principer Decorator Strategy PATTERNS MVC Singleton Template Adapter Bridge Iterator Low coupling Don t repeat yourself Favor composition Single responsibility PRINCIPLES GRASP FOUNDATIONS Information hiding Abstraction Inheritance Composition SOLID Liskov Substitution Principle Open-Closed Principle High cohesion Observer Factory Facade State Generics Abstract classes Exceptions JAVA Testing Collections Threads equals hashcode

Blooms lärandepyramid DIT012: Verktyg: Applying DIT953: Verktyg: EvaluaIng Principer: Applying

Kurshemsida http://www.cse.chalmers.se/edu/course/dit953

Kursens innehåll Del 1 : Objekt-orientierade verktyg och koncept Objects, references, initialization, Arv interfaces, abstract classes, dynamic binding, overloading, composition, LSP, Generics polymorphism, variance, Exceptions, design-by-contract, Del 2 : Objekt-orienterade designprinciper och mönster Överlapp förekommer

Kursens upplägg 2 moduler per vecka, 8 veckor Modul = Övning -> laborationspass -> reflektion/föreläsning Övning introducerar koncept, låter er arbeta med problemställning. Laborationspass låter er arbeta självständigt, med övningar och laborationer En del laborationspass kommer att användas till specifika workshops Föreläsning knyter ihop ämnet, visar på principer, diskuterar, reflekterar Två obligatoriska laborationer, vardera i två delar Inlämningsuppgift: analys av kod Muntlig tentamen

Jag förväntar mig av er Att ni är närvarande och deltar aktivt på övningar och föreläsningar. Att ni använder laborationstiden konstruktivt. Att ni deltar aktivt i grupparbetet kring laborationerna. Att ni lämnar in/redovisar laborationerna i (god) tid. Då kommer kursen gå bra för er!

Saker ni känner till sedan tidigare(?) Klasser Objekt Subklasser Primitiva typer Typomvandling Enum Interface Metoder Konstruktorer Call by value Call by reference Arv (inheritance) Polymorfism Association Inkapsling Synlighet Overloading Overriding Variabler Klassvariabler Scope Abstrakta klasser Abstrakta metoder Dynamisk bindning Arrayer If/While/For Enkel grafik

Övning Ladda hem DrawPolygons.java från kursens hemsida. Diskutera koden i grupper: Vilka förändringar av koden skulle göra den bättre? Varför? vad betyder bättre? OBS! Övningen går ut på att tänka och diskutera inte skriva kod! För mer utmaning: Fundera över möjligheten att klicka ut nya polygoner. Hur bör denna förändring implementeras?