Personal Objektorienterad programmeringsmetodik 5DV081 5DV109



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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Programmering A. Johan Eliasson

Parameteröverföring. Exempel. Exempel. Metodkropp

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

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

Classes och Interfaces, Objects och References, Initialization

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

OOP Objekt-orienterad programmering

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Java, klasser, objekt (Skansholm: Kapitel 2)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Anteckningar 1: Grundläggande saker

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

SMD 134 Objektorienterad programmering

Programmering för språkteknologer I, VT2012. Rum

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Objektorienterad programmering Föreläsning 4

Objekt och klasser - Introduktion

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Objektorienterad Programmering (TDDC77)

Modeller, Objekt och Klasser

Föreläsning 1 & 2 INTRODUKTION

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

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

TDIU01 - Programmering i C++, grundkurs

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

Arrayer. results

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Programmering = modellering

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Objektorienterad programmering i Java

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

TDDC77 Objektorienterad Programmering

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Föreläsning 3-4 Innehåll

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

F5: Högnivåprogrammering

F5: Högnivåprogrammering

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Klasser och objekt, referenser Grundkurs i programmering med Python

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

F4. programmeringsteknik och Matlab

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

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

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Typkonvertering. Java versus C

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Imperativ programmering. Föreläsning 4

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

OOP Objekt-orienterad programmering

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Programmering B med Visual C

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Programmering för språkteknologer II, HT2011. Rum

Föreläsning 3: Booleans, if, switch

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

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

Objektorienterad Programmering (TDDC77)

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Föreläsning 1: Introduktion till kursen

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

Transkript:

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109 VT-10 Lärare Johan Eliasson (johane@cs.umu.se) Handledare Thomas Johansson Mikael Öhman Lucas Lindström 1 2 Här sitter vi MIT-huset våning 4 Kursens kontaktpersoner Stud.Exp. Support Johan Studentexpeditionen Yvonne Löwstedt (yvonne@cs.umu.se) Datorsupport (support@cs.umu.se) 3 4 Två kurser Två kurser som samläses 5DV081 Endast 5p programmering som förkunskap 5DV109 Ny kurs Har DoA kursen som förkunskap Håll reda på vilken kurs ni läser. De sista laborationerna kommer att skilja sig och också ev. annan examination. Föreläsningarna kommer att vara gemensamma (för det mesta). Vissa delar kommer säkert kännas lite enkla för er som redan läs doan Gemensamma kursmål Efter avslutad kurs ska studenten kunna: analysera en given problembeskrivning för att kunna ange lösningens omfattning och begränsningar utforma objektorienterade lösningar för småskaliga problem, med hjälp av CRC-kort och RPD konstruera och tolka UML-klassdiagram tolka, utöka och konstruera småskalig objektorienterad kod omfattande minst 5-6 klasser testa enheter i koden med hjälp av lämpligt verktyg under utvecklingsarbetet definiera grundläggande objektorienterade koncept och reflektera över användningar av dessa i sina lösningar 5 6

Mål som skiljer sig Kursens uppläggning 5DV081 skriftligt dokumentera ett mindre programmeringsprojekt enligt givna riktlinjer 5DV109 visa färdighet att arbeta i en grupp utifrån en projektmodell och tillämpa de teoretiska kunskaperna och objektorienteringsparadigmen praktiskt på ett programmeringsprojekt Visa grundläggande kunskap om en projektmodells delar och hur dessa samverkar använda ett versionshanteringssystem för källkod och annan dokumentation som skapas i en projektgrupp Föreläsningar!! - F Metodikövningar! - CRC Individuell handledning 7 8 Examination 5DV081 5DV081 4 obligatoriska uppgifter Teoriprov (3 timmar) Praktisktprov i lab (4 timmar) 5DV109 3 obligatoriska uppgifter Teoriprov (3 timmar) Praktisktprov i lab (4 timmar) Projekt = 3 hp = 4,5 hp = 2 hp = 4 hp = 1,5 hp 9 Kursmaterial Cay S. Horstmann, Big, Wiley, 3 ed ISBN: 978-0-470-10554-2. 4 ed ISBN: 978-0-470-50948-7 Boken finns även i en något mindre utförlig upplaga under namnet Concepts Object-Oriented Analysis and Design Through Scenario Role-Play OH bilderna från föreläsningarna http://www.cs.umu.se/kurser/5dv109/vt10 10 Eclipse Kursverktyg Finns att ladda hem för de flesta datorplatformar (PC, Mac, Linux m.fl.) 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. 11 12

programmering Programmering i exekvering Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. <fil>.java programkod översättning kompilator <fil>.class bytekod exekvering exekvering 13 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 14 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 namn ålder adress flytta... Person Namn på klassen egenskaper (attribut) beteende (metoder) 15 Objekt Objekt och klasser Modeller av saker i problemdomänen ( den röda bilen i parkeringshuset Nanna ) Klasser Representerar alla objekt av ett visst slags ( bil ) 16 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) Två cirkel-objekt är en instans av är en instans av 17 18

bigyellowtriangle Objekt vs klass height width xposition yposition color Triangle changecolor changesize move... Metoder och parametrar Objekt har operationer som kan anropas ( I kallas de metoder) Metoder kan ha parametrar så att information som är nödvändig för att att utföra operationen kan ges till objektet smallbluetriangle 19 20 Källkod Varje klass beskrivs med hjälp av källkod (kod). Där definieras detaljerna (attribut och metoder) 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. 21 22 Objekt, klasser, syntax Syntaxdiagram Start på en icketerminal Terminal symbol Möjlig väg att följa En annan icketerminal Slut på beskrivning av icketerminal = 23 24

Tilldelning av värden En variabel innehåller antingen ett primitivt värde eller en referens till ett objekt Referenser som inte refererar till ett objekt har värdet null. Attribut sätts automatiskt till null övriga variabler måste initieras manuellt. Variabler måste initialiseras En variabel tilldelas ett (nytt) värde genom = Basic assignment = Expression ; Lokala variabler Attribut/fields är en sorts variabler De lagrar värden hela objektets liv De kan nås i hela klassen. Metoder kan innehålla variabler med kortare livslängd De existerar bara medan metoden exekveras De kan bara nås inne i metoden (i det block där de är definierade) 25 26 are och variabler are är namn på olika storheter som definieras av programmeraren Lite andra regler gäller i än i C are får innehålla bokstäver, siffror, understrykningstecknet (_), och valuta tecknen (t ex dollar tecknet) are får ej inledas med en siffra är case sensitive, dvs Total är olika total are för värden eller objekt kallas variabler Letter Letter Digit Letter a - z A - Z $ _ Digit 27 0-9 Variabler och datatyper Variabler används för att spara data Variabler måste deklareras med datatyp och namn innan de får användas Basic Variable Declaration Primitive Type ; Class Type En primitiv datatyp kan vara heltal (byte, short, int, long), flyttal (float, double), tecken (char) eller boolean En klasstyp är ett namn på en klass (t ex Triangle) Primitiva datatyper kallas också inbyggda datatyper Klasstyper kallas också användardefinierade datatyper, 28 Other java letter Primitiva datatyper: Hel- och flyttal De olika heltals och flyttals typerna har olika storlek. I är storlekarna def. enl. följande Typ byte short int long float double Storlek 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits Minimum -128-32,768-2,147,483,648 < -9 x 10 18 Maximum 127 32,767 2,147,483,647 > 9 x 10 18 +/- 3.4 x 10 38 med 7 signifikanta siffror +/- 1.7 x 10 308 med 15 signifikanta siffror Primitiva datatyper: Tecken En variabel av datatypen char sparar precis ett s k Unicode tecken Värdemängden är en ordnad uppräkning av tecken Det finns 65,536 unika Unicode tecken (16 bit) med tecken och symboler från olika språk, t ex 'å' och 'ö' Alla tecken är ordnade och varje tecken motsvarar en siffra (detta underlättar att kolla om ett tecken ligger t ex mellan 'a' och 'z') Se t.ex. http://www.unicode.org/ för detaljer 29 30

Primitiva datatyper: boolean Datatypen boolean har bara 2 värden true false Används på alla ställen där sanningsvärden behövs (tex ger jämförelseoperatorerna tillbaka resultat tillhörande denna datatyp) OBS detta skiljer sig alltså från C där heltal används som sanningsvärden Objekt Triangle bigyellowtriangle, smallbluetriangle; bigyellowtriangle =??? Hur får vi tillgång till objekt? 31 32 Konstruktorer public TicketMachine(int ticketcost) { price = ticketcost; balance = 0; total = 0; } Konstruktorer initialiserar ett objekt. De har samma namn som klassen. De lägger in startvärden på attributen. Startvärden till attributen kan fås utifrån via parametrar. Skapar nya objekt Ex new Triangle() new 33 34 Referenser vs värden Tilldelning har lite olika effekt för primitiva datatyper och klasstyper! Primitiva datatyper: Variabel! själva värdet Klasstyper: Variabel = referens till objektet (jämför med pekare i C) int i1 = 5, i2 = 10; 5 10 i1: i2: i2 = i1; 5 5 i1: i2: Triangle = new Triangle(); Triangle = new Triangle(); = ; 35 Alias och garbage collection Triangle = new Triangle(); Triangle = new Triangle(); = ;.changecolor ( red ); Ett objekt som refereras till mha flera referenser; referenserna kallas alias Objekt som inte längre kan nås; rensas bort automatiskt (garbage collection) Båda trianglar ( och ) har blivit röda! Var försiktig med aliasing 36

Syntax: Class Declaration Modifier Class Body { Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration } Class Associations Motsvarar variabel deklaration Class Body 37 Syntax: Basic Method Declaration Modifier Exempel: Metoddeklaration Type void Ej resultat Parameters Method Body public void changesize (int newheight, int newwidth) { Parameter } public float getarea ( ) { } Resultatets datatyp 38 Instantiering och manipulation Triangle atriangle = new Triangle(); Triangle height width xposition yposition color changecolor changesize move... atriangle.move(); atriangle.changecolor( blue ); atriangle.move(); atriangle.changesize(50, 100); En vanlig metodanrop ser ut så här! <objektnamn>.<metodnamn> (<parameterlista>); 39