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

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

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 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

Kursplanering Objektorienterad programmering

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

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

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

Programmeringsteknik II

Instuderingsuppgifter läsvecka 2

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

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

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

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

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

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

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

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

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

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

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

Föreläsning 15: Repetition DVGA02

Imperativ programmering. Föreläsning 4

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

Föreläsning 1: Introduktion till kursen

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

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

Föreläsning 1: Introduktion till kursen

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

EDAA01 Programmeringsteknik - fördjupningskurs

Introduktionsmöte Innehåll

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

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

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

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

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

Objektorienterad Systemutveckling Period 3

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

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

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

Laboration 2: Designmönster

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

Arv och polymorfism i Java

Föreläsning 1: Introduktion till kursen

Design och konstruktion av grafiska gränssnitt

Ingenjörsfirman Stéen Java Sida 1 av 1

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

Objektorienterad analys och design

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

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

Classes och Interfaces, Objects och References, Initialization

Objektorienterad programmering

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

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

Objektorienterad 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?

Objektorienterad Programmering (TDDC77)

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

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

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

Laboration 2: Designmönster

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

Design och konstruktion av grafiska gränssnitt

Föreläsning 4. Polymorfism. Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder

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

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

Objektorienterad programmering

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

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

Transkript:

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

Kursteamet Dr. Alex Gerdes kursansvarig, föreläsare Dr. Niklas Broberg examinator, (föreläsare) Fredrik Sjöholm handledare Johan Andersson handledare Sebastian Norlin handledare Christoffer Medin handledare Gustav Svensson handledare

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 TDA367 Objekt-orienterat programmeringsprojekt TDA551 Objekt-orienterad programmering och design TDA548 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 TDA548: Verktyg: Applying TDA551: Verktyg: Evaluating Principer: Applying

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

Kursens upplägg 2 moduler per vecka, 7 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 3 obligatoriska laborationer 1. Använda ett ramverk för att implementera spelet Snake (eller liknande) 2. Bygga ett paket för geometriska former 3. Analys och refaktorering av spelramverket från laboration 1 Muntligt redovisning Skriftlig tentamen men information senare

Workshops/tutorials Första läsvecka börjar vi med några workshops under laborationspassen Genomföra tutorials, länkar hittar ni på kurshemsidan under tabben Resurser Ämne Dokumentation: javadoc Enhetstestning: JUnit Versionshantering: git Be handledarna om hjälp om ni fastnar Man skulle kunna växla mellan workshops och labben

Kursplan översikt (preliminär) Vecka 1: Översikt, recap, UML, testning Vecka 2-3: Arv (inheritance), typer och subtyper Vecka 4-5: Dependency reduction (med patterns) Vecka 6: State och immutabilitet (med patterns) Vecka 7: Diverse (exceptions, threads, design by contract, lambdas,..?) Tentamen

Observera Kursen är (hyfsat) ny! Materialet kan komma att förändras under kursens gång! Hjälpa till genom att påpeka områden som är oklara

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 tid Då kommer kursen gå bra för er!

Saker ni kan 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

Grupper Använda samma grupper Niklas och jag är här för att lösa problem med grupper

Övning Ladda hem DrawPolygons.java från kursens hemsida Diskutera koden i grupp: Vilka förändringar av koden skulle göra den bättre? vad betyder bättre? Förbättra koden enligt de förändringar ni kommer fram till För mer utmaning: Lägg till möjligheten att klicka ut nya polygoner Hur bör denna förändring implementeras?