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

Relevanta dokument
Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Här sitter vi MIT-huset våning 4. Examination. Kursens uppläggning.

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

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

729G06 Föreläsning 1 Objektorienterad programmering

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

Föreläsning 1: Introduktion till kursen

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

Introduktionsmöte Innehåll

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen

Objektorienterad programmering, allmänt

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

Programmeringsteknik II

Objektorienterad programmering. Grundläggande begrepp

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

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

Kursinformation Grundkurs i programmering med Python

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

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

SKOLFS. beslutade den XXX 2017.

Programmering = modellering

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Java Sommarkurs. Institutionen för datavetenskap. Här sitter vi. Kursen kontaktpersoner utbildningsprogram

EDAA01 Programmeringsteknik - fördjupningskurs

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

TDIU01 (725G67) - Programmering i C++, grundkurs

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objektorienterad programmering

Objektorienterad programmering

OOP Objekt-orienterad programmering

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

Imperativ programmering. Föreläsning 4

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Kursplanering Objektorienterad programmering

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Classes och Interfaces, Objects och References, Initialization

Objektorienterad programmering

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

Välkomna till DIT012 IPGO

Klasser och objekt? Objekt och klasser. Analys och design. Objekt. Klass. Programmering?

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

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?

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

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

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

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Daniel Petersson (Labassistent) Examination. 1 Skriftlig tentamen (betyg)

OOMPA 2D1359 Föreläsning 2

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

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

Föreläsning 15: Repetition DVGA02

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

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

Parameteröverföring. Exempel. Exempel. Metodkropp

Poäng. Start v. DV1: Datavetenskapens byggstenar 7.5. Antal registrerade (män/kvinnor) 38 (38/0)

Linux som utvecklingsmiljö

Inledande programmering med C# (1DV402) Introduktion till C#

Arv och polymorfism i Java

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Universe Engine Rapport

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

Poäng. Start v. Applikationsprogramm ering i Python 7.5. Antal registrerade (män/kvinnor) 50 (34/16)

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

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

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

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

Objektorientering. Grunderna i OO

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Programmering, grundkurs

Projekt Foreläsning VI

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

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

Datastrukturer och algoritmer

Objektorienterad Programmering (TDDC77)

Grundkurs i programmering - intro

Datastrukturer och algoritmer

Inkapsling (encapsulation)

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

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

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

1DV432 ST14. 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?

Datateknik GR (A), Introduktion till programmering i C++, 7,5 hp

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

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

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

SKOLFS. beslutade den -- maj 2015.

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Transkript:

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