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

Relevanta dokument
Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

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

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

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

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

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

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Agenda. Objektorienterad programmering Föreläsning 13

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

Laboration 1 - Grunderna för OOP i Java

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

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

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

Malmö högskola 2008/2009 CTS

JAVA Mer om klasser och objektorientering

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

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

Lösningsförslag övning 2.

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

Tentamen. DD2385 Programutvecklingsteknik vt Tisdagen den 26 maj 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Konstruktion av klasser med klasser

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

JAVAUTVECKLING LEKTION 11

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

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

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Presentation av trafiksimuleringsprojektet

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

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

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Klasshierarkier - repetition

Laboration 3, uppgift En klass för en räknare

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

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

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

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

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

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

Föreläsning 13 Innehåll

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

OOP Tenta

Objektorienterad programmering D2

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

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

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

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Föreläsning 8: Exempel och problemlösning

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

Tentamen. DD2385 Programutvecklingsteknik vt Torsdagen den 27 maj 2010 kl Hjälpmedel: penna, suddgummi, linjal

TENTAMEN OOP

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

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

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

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

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

DD1342 Programkonstruktion för F1,

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Imperativ programmering. Föreläsning 4

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

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

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

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

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

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

PROGRAMMERINGSTEKNIK TIN212

(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

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Objektorienterad Programmering (TDDC77)

TENTAMEN OOP

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

Tentamen. Lösningsförslag

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Övning 3. Datateknik A, Java I, 5 poäng

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

Objektorienterad Programmering (TDDC77)

Transkript:

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål, förkortat Använda objektorienterade tekniker vid eget programmeringsarbete Redogöra för och tillämpa kriterier för god objektorienterad design Redogöra för de vanligaste designmönstren inom objektorienterad programutveckling samt välja lämpliga mönster för enkla tillämpningsexempel. Använda UML-klassdiagram för att på ett överskådligt och tydligt sätt planera och dokumentera eget programmeringsarbete. Läsa och förstå UML-klassdiagram, t.ex. som introduktion till nya designmönster. Använda Javas biblioteksklasser och ramverk Kursinnehåll Processen från Informell kravspecifikation till Färdigt program Objektorienterad programmering i Java med UML, designkriterier, designmönster

Processen från en informell kravspecifikation till färdigt program OOA (ObjektOrienterad Analys) OOD (ObjektOrienterad Design) Designmönster Kriterier för god design Refactoring UML klassdiagram UML diagram av andra slag Utvecklingsmetodik Traditionell metodik Agile methodologies, t.ex. extremprogrammering (XP), SCRUM Testning Versionshantering Objektorienterad programmering i Java med Klasser, objekt, konstruktorer, arv, static Abstrakta klasser, interface Klassbibliotek och ramverk Designmönster i Java-biblioteken Grafiska gränssnitt, i första hand med Swing Enkla komponenter, t.ex. JLabel, JButton Avancerade komponenter, t.ex. JList, JTree, JEditorPane Parallella processer: trådar Klient-server-program (där klient och server är på olika datorer) XML Riktig XML XML-liknande notation Java-begrepp att ta upp idag Klass, objekt Instansvariabel, instansmetod Klassvariabel, klassmetod Konstruktor Typer, typdeklarationer Arv, konstruktor vid arv Metoden public String tostring() Metoden public static void main(string[] a) Grundläggande syntax Exemplen med Spelkort och Patienskort är mycket viktiga. Studera dem noga!

Klass för Spelkort c l a s s S p e l k o r t { S t r i n g f a r g ; i n t v a l o r ; tostring-metoden i Spelkort c l a s s S p e l k o r t { //Konstruktor S p e l k o r t ( S t r i n g f, i n t v ) { f a r g = f ; v a l o r = v ; //Visa text-utseende p u b l i c S t r i n g t o S t r i n g ( ) {... / Ovan : o b j e k t m a l l e n f o r S p e l k o r t Nedan : k l a s s e n som b e h a l l a r e / s t a t i c S t r i n g [ ] s p e c v a l o r = { ESS, KNEKT, DAM, KUNG ; // main - metod skulle kunna ligga har // instansvariabler, konstruktor // som visats tidigare p u b l i c S t r i n g t o S t r i n g ( ) { S t r i n g v a l o r S t r i n g ; i f ( v a l o r == 1) v a l o r S t r i n g = s p e c v a l o r [ 0 ] ; e l s e i f ( v a l o r >=2 && v a l o r <=10) v a l o r S t r i n g = + v a l o r ; e l s e v a l o r S t r i n g = s p e c v a l o r [ v a l o r 1 0 ] ; return f a r g + + v a l o r S t r i n g ; //... som tidigare tostring-metoden i Spelkort (samma som förra bilden) instansvariabel, klassvariabel, lokal variabel c l a s s S p e l k o r t { // instansvariabler, konstruktor // som visats tidigare p u b l i c S t r i n g t o S t r i n g ( ) { S t r i n g valorstring ; i f ( valor == 1) valorstring = specvalor [ 0 ] ; e l s e i f ( valor >=2 && valor <=10) valorstring = + valor ; e l s e valorstring = specvalor [ valor 1 0 ] ; return farg + + valorstring ; //... som tidigare testa Spelkortsklassen: Klass med bara main-metod som skapar och visar kortlek c l a s s T e s t a S p e l k o r t { p u b l i c s t a t i c void main ( S t r i n g [ ] arg ) { // Skapa v e k t o r med p l a t s f o r 52 S p e l k o r t // Skapa k o r t e n // V i s a k o r t e n

testa Spelkortsklassen c l a s s T e s t a S p e l k o r t { p u b l i c s t a t i c void main ( S t r i n g [ ] arg ) { S t r i n g [ ] f a r g e r = { H j a r t e r, Spader, Ruter, K l o v e r ; // Skapa vektor med plats for 52 Spelkort. S p e l k o r t [ ] k o r t l e k = new S p e l k o r t [ 5 2 ] ; // Skapa korten i n t k o r t n r = 0 ; f o r ( S t r i n g f a r g : f a r g e r ) f o r ( i n t v a l o r = 1 ; v a l o r <=13; v a l o r ++) k o r t l e k [ k o r t n r ++] = new S p e l k o r t ( f a r g, v a l o r ) ; // Visa korten f o r ( S p e l k o r t spk : k o r t l e k ) System. out. p r i n t l n ( spk ) ; Kör testprogrammet! Filer: Spelkort.java TestaSpelkort.java Kompilera: >>>javac Spelkort.java TestaSpelkort.java => Spelkort.class TestaSpelkort.class Kör programmet: >>>java TestaSpelkort Utskrift i terminalfönstret... (klass med main-metod) Hjärter ESS Hjärter 2 Hjärter 3 Hjärter 4 Hjärter 5 Hjärter 6 Hjärter 7 Hjärter 8 Hjärter 9 Hjärter 10 Hjärter KNEKT Hjärter DAM Hjärter KUNG Spader ESS Spader 2 Spader 3 Spader 4 Spader 5 Spader 6 Spader 7 Spader 8 Spader 9 Spader 10 Spader KNEKT Spader DAM Spader KUNG... fast det blir bara en kolumn Ruter ESS Ruter 2 Ruter 3 Ruter 4 Ruter 5 Ruter 6 Ruter 7 Ruter 8 Ruter 9 Ruter 10 Ruter KNEKT Ruter DAM Ruter KUNG Klöver ESS Klöver 2 Klöver 3 Klöver 4 Klöver 5 Klöver 6 Klöver 7 Klöver 8 Klöver 9 Klöver 10 Klöver KNEKT Klöver DAM Klöver KUNG Patienskort ärver från Spelkort Korten har framsidan eller baksidan synlig. c l a s s P a t i e n s k o r t extends S p e l k o r t { boolean r a t t v a n d ; P a t i e n s k o r t ( S t r i n g f, i n t v, boolean r v ) { super ( f, v ) ; r a t t v a n d = r v ; void vand ( ) { r a t t v a n d =! r a t t v a n d ; p u b l i c S t r i n g t o S t r i n g ( ) {...

tostring-metoden for Patienskort Litet kodexempel med Patienskort p u b l i c S t r i n g t o S t r i n g ( ) { i f ( r a t t v a n d ) return super. t o S t r i n g ( ) ; e l s e return BAKSIDA ; P a t i e n s k o r t pk = new P a t i e n s k o r t ( Spader,12, true ) ; pk. vand ( ) ; pk. vand ( ) ; super. t o S t r i n g ( ) ; = t o S t r i n g ( ) i superklassen Spelkort anropas Första utskriften ger Spader DAM Andra utskriften ger BAKSIDA Tredje utskriften ger Spader DAM igen testa Patienskortsklassen: c l a s s T e s t a P a t i e n s k o r t { p u b l i c s t a t i c void main ( S t r i n g [ ] arg ) { S t r i n g [ ] f a r g e r = { H j a r t e r, Spader, Ruter, K l o v e r ; // Skapa vektor med plats for 52 Patienskort. P a t i e n s k o r t [ ] k o r t l e k = new P a t i e n s k o r t [ 5 2 ] ; // Skapa korten i n t k o r t n r = 0 ; f o r ( S t r i n g f a r g : f a r g e r ) f o r ( i n t v a l o r = 1 ; v a l o r <=13; v a l o r ++) k o r t l e k [ k o r t n r ++] = new P a t i e n s k o r t ( f a r g, v a l o r, true ) ; // Visa korten f o r ( P a t i e n s k o r t pk : k o r t l e k ) UML Standard för grafiska beskrivningar av olika aspekter av objektorienterade program. class diagram use case diagram statechart diagram sequence diagram activity diagram collaboration diagram component diagram deployment diagram

UML för Spelkort och Patienskort Spelkort ~ färg : String ~ valör : int UML för Kortlek, Spelkort och Patienskort Spelkort ~ färg : String ~ valör : int Patienskort ~ rättvänd : boolean ~ vänd() Kortlek 1 52 Patienskort ~ rättvänd : boolean ~ vänd() c l a s s P a t i e n s k o r t extends S p e l k o r t {... c l a s s K o r t l e k { P a t i e n s k o r t [ ] k o r t l e k = new P a t i e n s K o r t [ 5 2 ] ;... Klassen Kortlek c l a s s K o r t l e k { P a t i e n s k o r t [ ] l e k = new P a t i e n s K o r t [ 5 2 ] ; K o r t l e k ( ) { // Skapa 52 k o r t som v i g j o r d e t i d i g a r e // i testprogrammet void blanda ( ) {... // e j i // UML diagrammet! // f l e r metoder