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

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

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

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Laboration 1 - Grunderna för OOP i Java

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

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

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

Introduktion till Java

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

OOP Objekt-orienterad programmering

Introduktion till Java

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

JAVA Mer om klasser och objektorientering

TENTAMEN OOP

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

Konstruktion av klasser med klasser

TUTORIAL: KLASSER & OBJEKT

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

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

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

(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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

TENTAMEN OOP

Classes och Interfaces, Objects och References, Initialization

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Lösningsförslag övning 2.

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Java, klasser, objekt (Skansholm: Kapitel 2)

TENTAMEN OOP

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

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

PROGRAMMERINGSTEKNIK TIN212

Klasshierarkier - repetition

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

DD1342 Programkonstruktion för F1,

Objektorienterad Programmering (TDDC77)

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Malmö högskola 2008/2009 CTS

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Introduktionsmöte Innehåll

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

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

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

Grundläggande programmering med C# 7,5 högskolepoäng

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

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

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

LÖSNINGSFÖRSLAG TENTAMEN

Föreläsning 5-6 Innehåll

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

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

Objektorienterad Programmering (TDDC77)

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

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

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

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Objektorienterad Programmering (TDDC77)

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

DAT043 - Föreläsning 7

EDAA01 Programmeringsteknik - fördjupningskurs

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

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

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

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Chapter 4: Writing Classes/ Att skriva egna klasser.

Tentamen. Lösningsförslag

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Imperativ programmering. Föreläsning 4

Instuderingsuppgifter läsvecka 2

Tentamen i Grundläggande programmering STS, åk 1 fredag

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Tentamen OOP

Modeller, Objekt och Klasser

Att skriva till och läsa från terminalfönstret

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Malmö högskola 2007/2008 Teknik och samhälle

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Transkript:

Översikt Programmering tillämpningar och datastrukturer 729G58 (HKGBB7) rmation Objektorienterad programmering: och objekt Polymorfism Programexempel Programmering tillämpningar och datastrukturer 2 Vad kursen täcker Lärare Objektorienterad programmering Centrala begrepp Examinator Rita Kovordányi, ritko@ida.liu.se Designverktyg: UML Språket Java Kursassistent Tobias Ivarsson, tobiv@ida.liu.se Utvecklingsmiljö NetBeans el. Eclipse Datastrukturer Algoritmer Komplexitet Ingrid Alin Nilsson, Alin.Nilsson@gmail.com Kursadministratör Marie Ekström, marek@ida.liu.se Programmering tillämpningar och datastrukturer 3 Programmering tillämpningar och datastrukturer 4 Kursmål Rekommenderad litteratur Färdigheter i objektorienterad programmering Kommersiella mjukvaruprojekt Testning, felsökning Java är grafikorienterat Programmering av enkla grafiska gränssnitt Grundläggande datastrukturer och algoritmer Skansholm (2005): Java direkt med Swing (5:e upplagan) ISBN: 91-44-03843-7 och/eller Koffman & Wolfgang (2005): Objects, abstraction, data structures and design using Java ISBN: 0-471-66151-1 Programmering tillämpningar och datastrukturer 5 Programmering tillämpningar och datastrukturer 6 1

Kursupplägg Kursupplägg (forts) Föreläsningar varvat med labbar Labbintensiv kurs 1-2 labbtillfällen i veckan (kvartsfart) En tredjedel av tiden lärarledd Du förväntas som student att jobba 4 h på egen hand inför/efter varje föreläsning och lärarlett labbtillfälle Egen inläsning av nödvändig litteratur Råd: Läs inte från pärm till pärm Läs allteftersom kunskaperna behövs Kursen går på kvartsfart Avsikt: Ge tillräckligt med tid för att bli van med Java Se dock till att hålla jämn takt Lätt att glömma vad man redan kunde, om längre uppehåll Programmering tillämpningar och datastrukturer 7 Programmering tillämpningar och datastrukturer 8 Examination Laboration1 Tentamen Gamla tentor: se kurshemsidan U/G/VG Tre labbar Lämna till kursassistent Klassdiagram Väl kommenterad kod Egna tankar om labben (på särskilt blad) Var beredd att svara på muntliga frågor U/G utom på labb3: U/G/VG Grundläggande objektorientering i Java: Instanser Polymorfism Relationer Programmering tillämpningar och datastrukturer 9 Programmering tillämpningar och datastrukturer 10 Laboration2 Laboration3 Datastrukturer och algoritmer: Grafikorienterat äventyrsspel Länkade strukturer Listor, köer Iteration Sortering Simulering av en stormarknad Värld med platser och varelser Egen spelare och fiender Mål: samla poäng, överleva Fienderna letar efter egna spelaren genom Sökningsalgoritmer Programmering tillämpningar och datastrukturer 11 Programmering tillämpningar och datastrukturer 12 2

Java Utvecklingsmiljöer J2SE 1.5 (Java 2 Standard Edition version 1.5) NetBeans Speciellt för Java Ren miljö Få kringbegrepp Eclipse IDE (Integrated Development Environment): NetBeans el. Eclipse Stöder även andra språk (bl.a. C++) Kom ihåg att ställa in Java version (1.5) Emacs eller annan texteditor Programmering tillämpningar och datastrukturer 13 Programmering tillämpningar och datastrukturer 14 Hur starta NetBeans på Unix Välja Java-version i NetBeans > module initadd prog/jdk > module initadd prog/sunstudio > source.login > runide.sh & kör i bakgrunden (IDE = Integrated Development Environment.sh = shellscript motsv.bat i Windows) Obs! Kolla att du har rätt Java-version inställd! (Tools Java Platform Manager) Programmering tillämpningar och datastrukturer 15 Programmering tillämpningar och datastrukturer 16 Kortkommandon i NetBeans Hur starta Eclipse på Unix Alt-Shift-I Importera rätt paket (markören ska stå på den klass som ska importeras) Alt-Shift-F Fixa importer (importerar alla nödvändiga paket som behövs i programmet) Ctrl-Shift-T Kommentera bort dessa rader Ctrl-Shift-D Ta bort kommentarmarkering från dessa rader Ctrl-Shift-F Indentera koden > module initadd prog/jdk > module initadd prog/eclipse > source.login > eclipse & Obs! Ställ in rätt Java-version när du skapar ett nytt projekt! Programmering tillämpningar och datastrukturer 17 Programmering tillämpningar och datastrukturer 18 3

Sätta Java-version i Eclipse Kortkommandon i Eclipse Ctrl-Shift-M Importera rätt paket (markören ska stå på den klass som ska importeras) Ctrl-Shift-/ Kommentera bort dessa rader Ctrl-Shift-/ Ta bort kommentarmarkering från dessa rader Ctrl-Shift-F Indentera koden Programmering tillämpningar och datastrukturer 19 Programmering tillämpningar och datastrukturer 20 och objekt Objektorienterad programmering Klass: Hus, Djur, BankKonto Objekt: mitthus, annashus ludde pettersonskonto : äta kollasaldo Programmering tillämpningar och datastrukturer 22 Namnkonvention Klasshierarki startar med versaler (stor bokstav) Ex. Pingvin Objektreferenser (variabelnamn i allmänhet) startar med gemener Ex. pelle Använd versaler för att skilja åt ord Ex. mittkonto Går från generella klasser i topp Till specifika klasser i botten Superklass subklass Programmering tillämpningar och datastrukturer 23 Programmering tillämpningar och datastrukturer 24 4

Subklasser ärver egenskaper (variabler) Ärver sätt (metoder) : Räcker med att definiera flygförmåga i klassen Fåglar Alla subklasser kommer att kunna flyga (om inget annat anges) Programmering tillämpningar och datastrukturer 25 Programmering tillämpningar och datastrukturer 26 UML Klasshierarki i UML Unified Modeling Language Standardiserat sätt att rita upp sina klasser och visa relationer mellan klasserna I framtiden: automatisk generering av kod Programmering tillämpningar och datastrukturer 27 Programmering tillämpningar och datastrukturer 28 i UML Polymorfism (overriding) Programmering tillämpningar och datastrukturer 29 Programmering tillämpningar och datastrukturer 30 5

Polymorfism Polymorfism Fågel fågel; String fågeltyp; fågeltyp = JOptionPane.showInputDialog( Which bird do you want to create, Penguin (P) or Dove (D)?"); if (fågeltyp == P ) { fågel = new Pingvin(); else { fågel = new Duva(); fågel.flyga(); Fågel.flyga() eller Pingvin.flyga() Polymorfism = många former (knutna till samma namn) Flyga betyder olika saker i olika klasser Vilken metod som kommer att exekveras bestäms av vilket objekt som döljer sig bakom en variabel Finns definition i subklassen är det den som gäller Överskuggar (overrides) definitionen i superklassen Programmering tillämpningar och datastrukturer 31 Programmering tillämpningar och datastrukturer 32 Instansiering class Pingvin extends Rovfågel { boolean flyga() { return false; kan ha många olika instanser Ex. pingvinen pelle Ex. pingvinen kalle Skapas utifrån klassens beskrivning av variabler och metoder Klassen = mall Objekt = instanser byggda från mallen Programmering tillämpningar och datastrukturer 33 Programmering tillämpningar och datastrukturer 34 Instansiering Konstruktor class Pingvin extends Rovfågel { double minvikt; String mittnamn; instans av Pingvin variabler från Object metoddef i Object variabler från Fågel metoddef i Fågel var från Rovfågel metoddef i Rovfågel var från Pingvin metoddef i Pingvin egen kopia referens Pingvin(double vikt, String namn) { minvikt = vikt; mittnamn = namn; boolean flyga() { return false; Programmering tillämpningar och datastrukturer 35 Programmering tillämpningar och datastrukturer 36 6

Konstruktor i Java Skapar ny instans av klassen Objekten måste kunna kommunicera Alltid samma namn som klassen Vanligt tillvägagångssätt: Initiera alla instansvariabler Objektet som tar emot meddelandet måste kunna hantera detta Metoden måste vara definierad för objektet public Person () { ålder = 30; yrke = programmerare ; Ex. rectangle.setwidth(32); mottagare selektor argument Programmering tillämpningar och datastrukturer 37 Programmering tillämpningar och datastrukturer 38 Konstruktor (igen) Bok bläddra framåt: bok.bläddra.framåt; Bok bläddra till sidan 47 bok.bläddratillsidan(47); Konstruktorn utan argument definieras automatiskt av Java Alla variabler sätts till vanliga defaultvärden 0, false, null Skapa ny bok med titeln Java Direkt Öppna boken Definieras dock inte om andra konstruktorer har definierats av dig bok = new Bok( Java Direkt ); bok.öppna(); Då måste även parameterlösa konstruktorn definieras för hand! Programmering tillämpningar och datastrukturer 39 Programmering tillämpningar och datastrukturer 40 Program i Java Program i Java Filstruktur i NetBeans Statisk struktur En samling klassdefinitioner Dynamisk omgivning Objekt skapas och skickar sedan meddelanden till varandra pelle kalle janne Varje klassdefinition i egen fil (hjälpklasser kan finnas i samma fil) Objekt skapas dynamiskt under körning Objekten varierar från körning till körning Måste sättas i gång med ett första anrop I det läget finns det fortfarande inga objekt som kan anropa andra objekt! Programmering tillämpningar och datastrukturer 41 Programmering tillämpningar och datastrukturer 42 7

Main Main Startpunkten för ett program Placeras antingen i huvudklassen eller t.ex. i egen testklass Inga returargument public static void main(string[] args) { <skapa objekt> Tillhör klassen, inte dess instans Kan finnas i flera klasser Anropet > java MinKlass sätter igång programmet main i MinKlass börjar köras Startklassen med main ska ligga först i filen och klassen ska vara public Filnamnet ska vara samma som namnet på denna klass Programmering tillämpningar och datastrukturer 43 Programmering tillämpningar och datastrukturer 44 Filen MinKlass.java HelloWorld public MinKlass { public static void main(string[] args) { // initiera variabler och skapa objekt private StödKlass { // utför mindre stödberäkningar Används bara inom den här klassen public class HelloWorld { public HelloWorld() { // konstruktor public static void main(string[] args) { // main String name = JOptionPane.showInputDialog("Enter your name"); JOptionPane.showMessageDialog(null, "Hello " + name + ", welcome to Java!"); Programmering tillämpningar och datastrukturer 45 Programmering tillämpningar och datastrukturer 46 Enklare I/O, spårutskrift System.out.println( Variabeln + varnamn + har värdet + value); System.err.println( File could not be opened ); Skrivs ut med annan färg Varning för användaren (bättre än en senare totalkrasch) Programmering tillämpningar och datastrukturer 47 8