Objektorienterad programmering DAT050 DAI2 lp1 2016/2017 Uno Holmer Andreas Wieden Robin Åstedt Course Contents Introduction to object-oriented programming with a strong software engineering foundation aimed at producing and maintaining large, high-quality software systems. 2 Buzzwords responsibility-driven design inheritance encapsulation overriding coupling iterators javadoc interface cohesion refactoring abstraction collection classes mutator methods regression testing design patterns polymorphic method calls Goals Sound knowledge of programming principles Sound knowledge of object-orientation Able to critically assess the quality of a (small) software system Able to implement a small software system in Java 3 4 Book David J. Barnes & Michael Kölling Objects First with Java A Practical Introduction using BlueJ 6th edition, Pearson Education, 2016 ISBN 978-1-292-15904-1 Course overview (1) Objects and classes Class definitions Object cooperation Collections of objects Class libraries Class documentation methods Well-behaved objects automatic testing and debugging Well-designed programs 5 6 DAT050, 16/17, lp 2 1
Course overview (2) Handling errors Inheritance Polymorphism Abstract classes and interfaces How to build flexible and extendable class structures using inheritance Course overview (3) OOA DAT055 lp III Design process and modelling Graphical user interfaces Design patterns Streams and files Parallel computing with threads Communication Reflection and meta programming Software project 7 8 Activities Lectures Supervised class excercises Laborations (5) Your own work (plenty) V. Föreläsning BK kap. Laboration/ 35 Mån: F1 Introduktion till kursen och OOP App. A, B, C, D 1 Lab 1 Java och BlueJ Ons: F2 Objekt och klass, instansvariabler, konstruktorer och 2 metoder Sön 8/9 36 Mån: F3 Objektinteraktion, objektsamlingar Ons: F4 Objektsamlingar forts. 3, 4.1-4.8 4.9-4.17 Lab 2 Objektinteraktion Sön 15/9 37 Mån: F5 Associativa objektsamlingar och mängder, likhet och 5 identitet, klassvariabler, konstanter Ons: F6 Testning, enhetstestning, regressionstestning, JUnit, 7, App. G testautomatisering, avlusning Lab 3 Objektsamlingar Sön 22/9 38 Mån: F7 Dokumentation av program, JavaDoc, kompilering, modularisering av program Ons: F8 Designprinciper, koppling, kohesion, refaktorering App. I, J, K App. E, F. OH 6 Lab 4 Testning 39 Mån: F9 Arv, subtypning, substitutionsprincipen 8 Ons: F10 Polymorfism, statisk och dynamisk typ, dynamisk bindning 40 Mån: F11 Abstrakta klasser och gränssnitt 9 10 Sön 2/10 Lab 5 Arv Ons: F12 Kopiering av objekt, grund och djup kopiering 41 Mån: F13 Strukturerad felhantering OH 12 9 Ons: F14 Likhets- och jämförelserelationer för objekt, hashfunktioner 42 Ons Repetition 43 Tentamen: Tor 27/10 OH Sön 16/10 Fundamental concepts Demo object class method parameter data type 11 12 DAT050, 16/17, lp 2 2
Objects and classes objects represent things from the real world, or from some problem domain (example: the red car down there in the car park ) classes represent all objects of a kind (example: car ) Methods and parameters Objects have operations which can be invoked (Java calls them methods). Methods may have parameters to pass additional information needed to execute. 13 14 Other observations State Many instances can be created from a single class. An object has attributes: values stored in fields. The class defines what fields an object has, but each object stores its own set of values (the state of the object). 15 16 Two circle objects Source code Each class has source code (Java code) associated with it that defines its details (fields and methods). 17 18 DAT050, 16/17, lp 2 3
Return values Methods may return a result via a return value. FunktionsOrientering och ObjektOrientering (OO) ObjektOrienterad programutveckling Analys (OOA) Design (OOD) Programmering (OOP) 19 20 Funktionsorienterat synsätt Sätter systemets funktioner i centrum Det FunktionsOrienterade synsättet stanna(hissen); hissen stanna hissen Analysen fokuserar på systemets funktionalitet: Objektorienterat synsätt Sätter systemets objekt i centrum hissen.stanna(); stanna! hissen I fokus Funktioner verkar på data Underordnade Top-Down design, stegvis förfining, algoritmisk dekomposition,... 21 22 Funktionsorienterad bankomatdesign Manövrera kort Kontantuttag Verifiera kort PIN-kod belopp Mata ut sedlar Det ObjektOrienterade synsättet Systemet analyseras med avseende på verkliga ting Tingen modelleras som objekt interaktion mellan Objekt Öppna lås Stäng lås Ring upp centraldator Meddela fel Skriv ledtext Läs siffror Meddela fel - Tillstånd - Operationer upp ner Dataformaten är troligen kända i flera funktioner => svårt att lokalisera och ändra datarepresentation (Y2K ) Bankomatens sekventiella beteende är inkodat i strukturen => svårt att lägga till nya tjänster (t.ex. saldoförfrågan) Olika begrepp hanteras utspritt, t.ex. hanteringen av displayen => svårt att lokalisera vid förändringar VAD hanteras i systemet (vilka objekt)? Vilka relationer finns mellan objekten? Hur kan objekten samarbeta för att ge önskade tjänster? Vilka operationer måste finnas i objekten? 23 24 DAT050, 16/17, lp 2 4
Objektorienterad bankomatdesign Luckmotor Skrivare KopplaUpp KopplaNer Centraldator Lucklås Öppna Upp Ner SkrivKvitto MinskaSaldo VerifieraKort Display Stäng Meddelande Styrenhet MataUtSedlar SedlarSlut Sedelutmatare TangentHändelse Tangentbord LäsTangent KortInmatat MataUtKort Kortenhet 25 DAT050, 16/17, lp 2 5