Personal Objektorienterad programmeringsmetodik 5DV133 Java VT-16 1 Lärare Anders Broberg, anders.broberg@cs.umu.se Handledare och gruppövningar Niklas Fries Adam Dalhgren Jonathan Westin Erik Moström Alexander Sutherland 2 Kursmål Kunskap och förståelse förklara grundläggande koncept i en objektorienterad ansats, visa kunskap om metoder, så som CRC, för objektorienterad modellering av system, visa kunskap om UML-notation för klassdiagram. Färdighet och förmåga tillämpa grundläggande objektorienterade koncept i Java analysera ett problem utifrån en objektorienterad ansats, i grupp och enskilt designa ett objektorienterat program, dokumentera denna design, samt implementera den i Java, använda ett versionshanteringssystem för källkod och annan dokumentation som skapas i grupp, kunna utföra enhetstestning med hjälp av JUnit. Värderingar och förhållningssätt visa förmåga att utifrån en objektorienterad ansats, och andra för problemet relevanta aspekter göra bedömningar av en modells lämplighet. 3 Kursens uppläggning Föreläsningar - F Labborationsövningar Metodikövningar - G - Under dessa kommer vi främst att jobba med CRC-metoden Laborationer - L Enskilt och i grupp Individuell handledning Salstenta - T 4
Examination Två moment Moment 1: 4 hp Teoriprov (3 timmar) Moment 2: 3,5 hp Examineras via obligatoriska uppgifter (varav en ska genomföras i grupp och redovisas vid två tillfällen) Kursutvärderingar... Se om det går att flytta fler föreläsningar tidigare så att man snabbare kan komma igång med lab1 och därmed undvika att arbetsbelastningen blir så hög i slutet av kursen. Undersök om det går göra tex lab 2 frivillig för att minska antalet obligatoriska moment; jag tror dock att det behövs lika många övningstillfällen på CRC-metoden för att man ska behärska den nog bra så det är inte säkert att det är lämpligt Gör en grundligare genomgång av Eclipse och SVN 5 6 Laborationsövningar Lite förändringar För att komma ingång med utvecklingsmiljön Med programmeringen För att ge mer stöd Flyttat föreläsningar Lagt in ny föreläsning om test och metoddesign SVN -> GIT Cay S. Horstmann, Big Java, Wiley, 5 ed ISBN: 978-0-470-55309-1 Kursmaterial Även övriga upplagor från och med ed3 funkar Boken finns även i en något mindre utförlig upplaga under namnet Java Concepts Object-Oriented Analysis and Design Through Scenario Role-Play OH bilderna från föreläsningarna Eclipse->IntelliJ http://www.cs.umu.se/kurser/5dv133/vt16 En sammanfattningsföreläsing i mitten av kursen 7 8
Kursverktyg Labborationerna Utvecklingsmiljön Finns att ladda hem för de flesta datorplattformar (PC, Mac, Linux m.fl.) Java 1.7 Anders Broberg Handledarna Studenterna Böcker, Google, 9 Klockan Grundläggande java, enkel form av arv Labyrinten Mer avancerade former av arv, enhetstest, enhetstester mm. Sensornätverk Få ihop allt ihopa, jobba i grupp, jobba utifrån en vag uppgiftsbeskrivning 10 Erfarenhet? Halleluja moment Vad handlar det om? Vad gör man när man programmerar? Vilket är ert drömprogram att skriva som inte finns idag? Vilket existerande program skulle ni vilja ha skrivet (inte ur ekonomiska aspekter) 11 Metodik? Teknik? Design? Problem eller utmaning? Modellering? Abstraktion? Testning? Kvalitet? Objektorienterad? 12
Ni har läst grundläggande programmeringsmetodik C, Python, etc Ni har läst Datastrukturer och algoritmer Använd C eller Python för att bygga listor, träd, tabeller, etc. Hur väl stödjer C de saker som DoA:n lyfter fram Inkapsling, återanvändning, mm 13 Är ni taggade på att ta nästa steg, för att klara av att bygga större mer komplexa system? Vi behöver utöka verktygslådan med mer Designtänk och metodik bättre stöd för DoA i språket verktyg för att testa och tänka kvalitet och test verktyg för att stödja samarbete med sätt att angripa vaga problemställningar 14 De stora utmaningarna i kursen Objektorienterad programmeringsmetodik? Vad har ni för förväntningar? Vilka mål har du satt upp? Vi förväntar oss Att ni vill lära er att programmera på riktigt! Att ni kan grundläggande programmering i C/ Python Gå från enkla algoritmer till körbart program Konstruera grundläggande algoritmer Konturera grundläggande datatyper Få ihop klasser och objekt Förstå arv och olika aspekter av arv Tänka objektorienterat hela vägen Omsätta teorin i praktik Inse att det inte bara finns en lösning/design Välja lämplig representation 15 16
Objektorienterad programmering Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. En klass är en byggplan för objekt av samma sort. Arv är en mekanism för att återanvända kod Figure Square Triangle Circle 17 Garbage collection, mekanism för att återlämna icke utnyttjat minne Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt, gripbart, synligt ting (t ex en specifik person) Abstrakt ting (t ex en tid eller en anställd) Varje objekt har ett tillstånd, ett beteende och en identitet. Tillståndet beskriver objektets egenskaper (t ex adress och ålder hos en person) Beteendet beskriver vad objektet kan göra (t ex flytta). OBS! Detta kan innebära att tillståndet ändras Identiteten skiljer ett objekt från alla andra objekt 18 Klass En klass är en byggplan för objekt av samma sort. Alla objekt av en klass (instanser) har samma sorts egenskaper och beteenden En klass beskriver en mängd liknande objekt Datatyp namn ålder adress flytta... Person Namn på klassen egenskaper (attribut) beteende (metoder) 19 Objekt Objekt och klasser Modeller av saker i problemdomänen ( den röda bilen i parkeringshuset Nanna ) Klasser Representerar alla objekt av ett visst slag ( bil ) 20
Lite annat Många instanser kan skapas av en klass Ett objekt har attribut: värden som lagras i fields. Klassen definierar vilka fields ett objekt har, men varje objekt har sin egen uppsättning värden (objektets tillstånd/ state) är en instans av circle1:circle diameter=50 xposition=80 yposition=30 color="blue" isvisible=true Två cirkel-objekt Circle diameter:int xposition:int yposition:int color:string isvisible:boolean är en instans av circle2:circle diameter=30 xposition=230 yposition=75 color="red" isvisible=true 21 22 bigyellowtriangle smallbluetriangle Objekt vs klass height width xposition yposition color Triangle changecolor changesize move... Abstraktion och modularisering Abstraktion är förmågan att strunta i delarnas detaljer och istället fokusera på problemet på en högre nivå Ett/en objekt/klass är abstrakt i den meningen att vi inte behöver känner till alla detaljer för att kunna använda den Modularisering är arbetet att dela upp helheten i mindre, väldefinierade delar som kan byggas och utvärderas separat, och som interagerar på ett väldefinierat sätt. 23 24
Java Utformades av James Gossling (SUN) och släpptes 1995 Konstruerat för att vara plattformsoberoende. Dvs ett program skrivet i java skall gå att köra på olika datorplattformar utan att man behöver göra några förändringar. java-kod->byte-kod->maskinkod 25 programmering <fil>.java Java programkod Programmering i Java översättning kompilator exekvering <fil>.class Java bytekod exekvering exekvering 26