UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd...

33
1 UvA, opleiding AI, cursus IOOP 10- 11 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011 Docent: drs. F. de Vries Assistent: Maarten Inja

Transcript of UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd...

Page 1: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

1

UvA, opleiding AI, cursus IOOP 10-11

UvA - Opleiding AICursus

Imperatief & Objectgeoriënteerd Programmeren

2010-2011

• College 1: maandag 31 januari 2011

• Docent: drs. F. de Vries

• Assistent: Maarten Inja

Page 2: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

2

UvA, opleiding AI, cursus IOOP 10-11

Ponskaarten

Page 3: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

3

UvA, opleiding AI, cursus IOOP 10-11

Programma vandaag

1e uur: opzet van de cursus- Begeleiding, Inhoud, Opdrachtenschema’s

- Beoordeling en deadlines, Practicum

2e uur: stof hoofdstuk 1 en 2- Concepten en begrippen

- Programmavoorbeelden

Page 4: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

4

UvA, opleiding AI, cursus IOOP 10-11

Doel van de cursus

• Kennismaking met de concepten van het moderne object-georiënteerde programmeren

• Kennis van de begrippen en concepten

• Kunnen toepassen van concepten

• Ervaringskennis met toepassen van de concepten

Page 5: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

5

UvA, opleiding AI, cursus IOOP 10-11

Realisatie van het doel van de cursus

• Twee sporen:

• (1) Theorie: oefeningen uit de werkboeken maken

• (2) Praktijk: practicumopdrachten maken

Page 6: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

6

UvA, opleiding AI, cursus IOOP 10-11

De website van de cursus

• http://staff.science.uva.nl/~fdevries/ioop.ai/ioop1011/index.htm

• Literatuur

• Cursusrooster

• Opdrachten werkboek

• Opdrachten practicum

Page 7: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

7

UvA, opleiding AI, cursus IOOP 10-11

Werkboeken

• Onderdelen van de Student Lab Manuals:– Prelab Activities (met 5 sub-onderdelen)

– Lab Exercises

– (Labs provided by instructor)

– Postlab Activities

• We maken 3 onderdelen uit Prelab Activities:– Short Answers

– Programming Ouput

– Correct the code

• Telt voor 30% van theoriecijfer

Page 8: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

8

UvA, opleiding AI, cursus IOOP 10-11

Beoordeling practicumopdrachten

• Per opdracht 0, 1 of 2 punten:• 0 punten: programma werkt niet en/of voldoet

niet aan de specificaties• 1 punt: programma werkt en voldoet aan de

specificaties• 2 punten: plus voldoet aan code conventies:

– Zinvolle code– Overzichtelijke code– Lay out en comments volgens code conventies

• Voorbeelden

Page 9: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

9

UvA, opleiding AI, cursus IOOP 10-11

0 punten

Page 10: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

10

UvA, opleiding AI, cursus IOOP 10-11

1 punt

Page 11: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

11

UvA, opleiding AI, cursus IOOP 10-11

2 punten (deel a)

Page 12: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

12

UvA, opleiding AI, cursus IOOP 10-11

2 punten (deel b)

Page 13: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

13

UvA, opleiding AI, cursus IOOP 10-11

Code conventies (1)

• Comments:– Intro klasse (doel, functie, opdracht nr, naam auteur,

datum) meerdere regels– Kort comment elke instantie variabele– Introductie methode 1 regel– Code blokken: wat en waarom– End-comments bij klasse, methode, blok, nesting– Elke methode heeft dus minimaal 2 comments

– http://staff.science.uva.nl/~fdevries/ioop.ai/ioop1011/algemeen/codeConventies.htm

Page 14: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

14

UvA, opleiding AI, cursus IOOP 10-11

Code conventies (2)

• Lege regels:– Vóór de header van de klasse

– Vóór elke methode beschrijving

– Vóór een samenhangend codeblok

• Accolades {..}– (aanbevolen) Begin accolade: vooraan, regel verder leeg

– Einde accolade: vooraan met end-comment

• Spaties: – (aanbevolen) rond argumenten ( arg1, arg2 )

• Regellengte: – maximaal plm. 80 tekens

Page 15: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

15

UvA, opleiding AI, cursus IOOP 10-11

Code conventies (3)

Extra conventies:

1. Namen van klassen beginnen altijd met een Hoofdletter

2. Namen van methoden beginnen met een kleine letter

3. Namen van variabelen beginnen met een kleine letter

4. Lange namen worden met de CamelCase notatie beschreven

Page 16: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

16

UvA, opleiding AI, cursus IOOP 10-11

Wat wordt bekend verondersteld?

• Normale computergebruik

• Enige bekendheid met Windows

• Edit-compile-execute cyclus programmeren

Page 17: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

17

UvA, opleiding AI, cursus IOOP 10-11

Spaciale aandacht voor:

• Studenten die achterlopen:– Sneller signaleren

– Extra aandacht

• Laatste jaar van deze cursus??– Dus afronden extra belangrijk

Page 18: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

18

UvA, opleiding AI, cursus IOOP 10-11

Pauze

• Uitdelen short list concepten

• Na de pauze: stof hfst 1 en 2

Page 19: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

19

UvA, opleiding AI, cursus IOOP 10-11

Deel 2: stof hoofdstuk 1 en 2

• Hoofdstuk 1: algemene inleiding

• Hoofdstuk 2: eenvoudige Java programma’s

Page 20: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

20

UvA, opleiding AI, cursus IOOP 10-11

1.13 Typical Java Development Environment

• Java programs go through five phases– Edit

• Programmer writes program using an editor; stores program on disk with the .java file name extension

– Compile• Use javac (the Java compiler) to create bytecodes from source code program;

bytecodes stored in .class files

– Load• Class loader reads bytecodes from .class files into memory

– Verify• Bytecode verifier examines bytecodes to ensure that they are valid and do not

violate security restrictions

– Execute• Java Virtual Machine (JVM) uses a combination of interpretation and just-

in-time compilation to translate bytecodes into machine language

Page 21: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

21

1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 1.1 | Typical Java development environment.

Page 22: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

22

UvA, opleiding AI, cursus IOOP 10-11

Hoofdstuk 2

• Eerst 4 vormen van Welcome.java

• Eenvoudige applicaties:– Voorbeeld 1: class Addition

– Voorbeeld 2: class Comparison

Page 23: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

23

UvA, opleiding AI, cursus IOOP 10-11

Figuur 2.1 Welcome1.java

Page 24: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

24

UvA, opleiding AI, cursus IOOP 10-11

Figuur 2.3 Welcome2.java

Page 25: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

25

UvA, opleiding AI, cursus IOOP 10-11

Figuur 2.4 Welcome3.java

Page 26: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

26

UvA, opleiding AI, cursus IOOP 10-11

Figuur 2.6 Welcome4.java

Page 27: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

27

UvA, opleiding AI, cursus IOOP 10-11

Fig. 2.7 Addition.java – deel 1 • import declaration

• Scanner

• nextInt 1 // Fig. 2.7: Addition.java

2 // Addition program that displays the sum of two numbers.

3 import java.util.Scanner; // program uses class Scanner

4

5 public class Addition

6 {

7 // main method begins execution of Java application

8 public static void main( String args[] )

9 {

10 // create Scanner to obtain input from command window

11 Scanner input = new Scanner( System.in );

12

13 int number1; // first number to add

14 int number2; // second number to add

15 int sum; // sum of number1 and number2

16

17 System.out.print( "Enter first integer: " ); // prompt

18 number1 = input.nextInt(); // read first number from user

19

import declaration imports class Scanner from package java.util.

Declare and initialize variable input, which is a Scanner.

Declare variables number1, number2 and sum.

Read an integer from the user and assign it to number1.

Page 28: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

28

UvA, opleiding AI, cursus IOOP 10-11

deel 2

•Addition.java

•(2 of 2)

•4. Addition

•5. printf

20 System.out.print( "Enter second integer: " ); // prompt

21 number2 = input.nextInt(); // read second number from user

22

23 sum = number1 + number2; // add numbers

24

25 System.out.printf( "Sum is %d\n", sum ); // display sum

26

27 } // end method main

28

29 } // end class Addition

Enter first integer: 45 Enter second integer: 72 Sum is 117

Read an integer from the user and assign it to number2.

Calculate the sum of the variables number1 and number2, assign result to sum.

Display the sum using formatted output.

Page 29: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

29

UvA, opleiding AI, cursus IOOP 10-11

Hoofdstuk 2

• Toepassing gelijkheids- en relationele operatoren

• Voorbeeld 2: class Comparison

Page 30: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

30

UvA, opleiding AI, cursus IOOP 10-11

Fig. 2.14 | Equality and relational operators.

Standard algebraic equality or relational operator

Java equality or relational operator

Sample Java condition

Meaning of Java condition

Equality operators == x == y x is equal to y != x != y x is not equal to y Relational operators > x > y x is greater than y < x < y x is less than y >= x >= y x is greater than or equal to y ≤ <= x <= y x is less than or equal to y

Page 31: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

31

UvA, opleiding AI, cursus IOOP 10-11

Outline 1 // Fig. 2.15: Comparison.java 2 // Compare integers using if statements, relational operators 3 // and equality operators. 4 import java.util.Scanner; // program uses class Scanner 5 6 public class Comparison 7 { 8 // main method begins execution of Java application 9 public static void main( String args[] ) 10 { 11 // create Scanner to obtain input from command window 12 Scanner input = new Scanner( System.in ); 13 14 int number1; // first number to compare 15 int number2; // second number to compare 16 17 System.out.print( "Enter first integer: " ); // prompt 18 number1 = input.nextInt(); // read first number from user 19 20 System.out.print( "Enter second integer: " ); // prompt 21 number2 = input.nextInt(); // read second number from user 22 23 if ( number1 == number2 ) 24 System.out.printf( "%d == %d\n", number1, number2 ); 25 26 if ( number1 != number2 ) 27 System.out.printf( "%d != %d\n", number1, number2 ); 28 29 if ( number1 < number2 ) 30 System.out.printf( "%d < %d\n", number1, number2 );

Test for equality, display result using printf.

Compares two numbers using relational operator <.

Page 32: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

32

UvA, opleiding AI, cursus IOOP 10-11

Outline

•Comparison.java

•(2 of 2)

•Program output

31 32 if ( number1 > number2 ) 33 System.out.printf( "%d > %d\n", number1, number2 );

34

35 if ( number1 <= number2 )

36 System.out.printf( "%d <= %d\n", number1, number2 );

37

38 if ( number1 >= number2 )

39 System.out.printf( "%d >= %d\n", number1, number2 );

40

41 } // end method main

42

43 } // end class Comparison Enter first integer: 777 Enter second integer: 777 777 == 777 777 <= 777 777 >= 777 Enter first integer: 1000 Enter second integer: 2000 1000 != 2000 1000 < 2000 1000 <= 2000

Enter first integer: 2000 Enter second integer: 1000 2000 != 1000 2000 > 1000 2000 >= 1000

Compares two numbers using relational operators >, <= and >=.

Page 33: UvA, opleiding AI, cursus IOOP 10-11 1 UvA - Opleiding AI Cursus Imperatief & Objectgeoriënteerd Programmeren 2010-2011 College 1: maandag 31 januari 2011.

33

UvA, opleiding AI, cursus IOOP 10-11

Volgende week

• College– Bespreking en zelfbeoordeling van LabManual oefeningen

hoofdstuk 2

– Vooruitblik op de stof van hoofdstuk 3

• Practicum– Basisopdrachten cursusweek 2 (jaarweek 6)

• Studie– Stof hoofdstuk 3 Deitel & Deitel

– Lab Manual oefeningen hoofdstuk 3

– Basisopdrachten cursusweek 3