Algoritmiek

1 / 35

# Algoritmiek - PowerPoint PPT Presentation

Algoritmiek. Variables and Methods Graphics Hoorcollege 10 - Ma. 6 nov. 2006 L.M. Bosveld-de Smet. Variables: associatie (1). Variables: associatie (2). Objects: instance variables instance methods. Voorbeeld Object: letter ‘a’. Classes en Objects. Variables: kenmerken. Naam Data Type

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Algoritmiek' - teresa

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Algoritmiek

Variables and Methods

Graphics

Hoorcollege 10 - Ma. 6 nov. 2006

L.M. Bosveld-de Smet

Variables: kenmerken
• Naam
• Data Type
• 8 primitive types
• onbeperkt aantal object of reference types
• Bereik (Scope)
• Initialisatie
• Declaratie
Variables: verschillende soorten
• Local variables
• Parameters
• Instance variables (non-static fields)
• Class variables (static fields)
public class variable: voorbeeld
• Constante van de Math class (java API)

public static final double PI = 3.1415926535…;

public class PrintPI {

public static void main (String[] args){

System.out.println(Math.PI);

}

}

Instance variable: voorbeeld

public class Bicycle {

… … …

private int speed;

… … …

public Bicycle (int startSpeed) {

speed = startSpeed;

}

… … …

public int getSpeed (){

return speed;

}

… … …

}

instance variable

constructor:

Bicycle myBicycle = new Bicycle (10);

getter method:

myBicycle.getSpeed()

public class method: voorbeelden
• Methods van de Math class (java API)

public static int round (float a)

public static double sqrt (double a)

public static double random ()

Math.round(5.5)

private class variable / public class method: voorbeelden

public class Bicycle {

… … …

private int speed;

private int id;

private static int numberOfBicycles = 0;

… … …

public Bicycle (int startSpeed) {

speed = startSpeed;

id = ++numberOfBicycles;

}

… … …

public static int getNumberOFBicycles(){

return numberOfBicycles;

}

… … …

}

class variable

class method:

Bicycle.getNumberOfBicycles

local variables: voorbeeld (1)

public class Adding {

public static void main (String[] args) {

int next=1;

int total = 0;

while (next > 0) {

total = total + next;

}

System. out.println("Total is : " + total);

}

}

local variables: voorbeeld (2)

while (workToDo (table)) {

for (int r = 0; r < table.length; r++) {

for (int c = 0; c < table [0].length; c++) {

if (table [r] [c] > 3) {

stamps += 4;

table [r] [c] -= 4;

parameter: voorbeeld

public void setFee (double newFee) {

fee = newFee;

}

parameter

doc.setFee (150.00);

Array parameters

public class WordLists {

public static void main(String[] args)

String[] wordList1 = {"aap", "hond", "varken", "luipaard", "bever"};

String[] wordList2 = {"hortensia", "roos", "lelie", "geranium", "magnolia"};

System.out.println ("Longest word list 1: " + wordList1[longestWord(wordList1)]);

System.out.println ("Longest word list 2: " + wordList2[longestWord(wordList2)]);

}

private static int longestWord(String[] list) {

int indexLongestWord = 0;

for (int i = 1; i < list.length; i++) {

if (list[i].length() > list[indexLongestWord].length()) {

indexLongestWord = i;

}

}

return indexLongestWord;

}

}

Instance methods

public class Person {

private String name;

public Person () {

name = "no name yet.";

}

public Person (String initialName) {

name = initialName;

}

public void setName (String newName) {

name = newName;

}

public String getName () {

return name;

}

public void writeOutput () {

System.out.println ("Name: " + name);

}

public boolean sameName (Person otherPerson) {

return (this.name.equalsIgnoreCase (otherPerson.name))

}

}

Class methods: examples

public static void callByName (String name) {

system.out.print (name);

}

private static int updateScore (int currentScore, int points) {

return currentScore + points;

}

Class var./method: gebruik in class

public class <class_name>

<declaratie class variable(s)>

public static void main (String [] args) {

<main body>

}

<declaratie class method(s)>

}

“helpers”
• Class methods als “helpers”
• “cohesion”
• “stepwise refinement”
• “top-down decomposition”
Verdeling van taken
• Quiz-programma:
• Stel een vraag aan de gebruiker
• Lees het antwoord van de gebruiker
• Controleer of het antwoord correct is
• Geef adequate feedback
• Hou de score bij
Class “helper” methods

private static String readAnswer (String question) {

SimpleIO.prompt (question);

String userInput = SimpleIO.readLine();

return userInput.trim().toLowerCase();

}

private static boolean match (String userAnswer, String correctAnswer) {

}

private static void giveFeedback (boolean ok, String hurrah, String sorry) {

System.out.println (ok ? hurrah : sorry);

}

private static void updateScore (boolean ok) {

if (ok) {

score += 10;

}

}

Gebruik van “helpers” in main

import jpb.*;

public class Quiz {

private static int score;

public static void main(String[] args) {

score = 0;

String userAnswer = "";

boolean isCorrect = false;

isCorrect = match (userAnswer, "binary digit") ;

giveFeedback (isCorrect, "Goed geantwoord!", "Sorry. Verkeerd antwoord.");

userAnswer = readAnswer ("Hoeveel bytes komen overeen met 32 bits?\n") ;

isCorrect = match (userAnswer, "4") ;

giveFeedback (isCorrect, "Het gaat prima zo!", "Wat jammer nu!") ;

System.out.println ("Your total score is " + score + " points.");

}

<declaration helpers>

}

DrawableFrame object en methoden

import java.awt.*;

import jpb.*;

public class <class name> {

public static void main (String[] args) {

// create drawable frame

DrawableFrame df = new DrawableFrame(<frame title>);

df.show() / df.setVisible(true);

df.setSize(<width>,<height>);

// obtain graphics context

Graphics g = df.getGraphicsContext();

//make drawing

<Graphics methods applied to Graphics object>;

// repaint frame

df.repaint();

}

}

DrawableFrame- en Graphics-objecten

graphics context

frame / window

line

DrawLine class

// draws a line inside a frame

import java.awt.*;

import jpb.*;

public class DrawLine {

public static void main (String[] args) {

// create drawable frame

DrawableFrame df = new DrawableFrame("Line");

df.setVisible(true);

df.setSize(200,200);

// obtain graphics context

Graphics g = df.getGraphicsContext();

// draw line

g.drawLine(50,50,150,150);

// repaint frame

df.repaint();

}

}

Gele achtergrondvorm stoplicht

kleur van de vorm

// Draw background of sign

g.setColor(Color.yellow)

int[] xBackground = {0, 100, 200, 100};

int[] yBackground = {100, 0, 100, 200}; g.fillPolygon(xBackground, yBackground, xBackground.length);

X coordinaten van vorm

Y coordinaten van vorm

5 geneste vierkanten

// Draw five nested polygons to form the stripe on the

// outer border of the sign

g.setColor(Color.black);

int[] xPolygon1 = {5, 100, 195, 100};

int[] yPolygon1 = {100, 5, 100, 195};

g.drawPolygon(xPolygon1, yPolygon1, xPolygon1.length);

int[] xPolygon2 = {6, 100, 194, 100};

int[] yPolygon2 = {100, 6, 100, 194};

g.drawPolygon(xPolygon2, yPolygon2, xPolygon2.length);

int[] xPolygon3 = {7, 100, 193, 100};

int[] yPolygon3 = {100, 7, 100, 193};

g.drawPolygon(xPolygon3, yPolygon3, xPolygon3.length);

int[] xPolygon4 = {8, 100, 192, 100};

int[] yPolygon4 = {100, 8, 100, 192};

g.drawPolygon(xPolygon4, yPolygon4, xPolygon4.length);

int[] xPolygon5 = {9, 100, 191, 100};

int[] yPolygon5 = {100, 9, 100, 191};

g.drawPolygon(xPolygon5, yPolygon5, xPolygon5.length);

Tekenen van stoplicht

// Draw a black rectangle (the traffic signal)

g.fillRect(77, 35, 46, 130);

// Draw red,yellow,and green circles (the traffic

// lights)

g.setColor(Color.red);

g.fillOval(83, 43, 34, 34);

g.setColor(Color.yellow);

g.fillOval(83, 84, 34, 34);

g.setColor(Color.green);

g.fillOval(83, 125, 34, 34);

Tonen van tekst

Monospaced, Bold, 30

SansSerif, Italic, 30

Serif, Plain, 40

Toon tekst: programma

import java.awt.*;

import jpb.*;

public class DisplaySum {

public static void main (String[] args) {

// create drawable frame

DrawableFrame df = new DrawableFrame("Wirth's RULE");

df.setVisible(true);

df.setSize(350,200);

// obtain graphics context

Graphics g = df.getGraphicsContext();

// display text in red monospaced bold font

g.setColor(Color.red);

g.setFont(new Font("Monospaced", Font.BOLD, 30));

g.drawString("DATA STRUCTURES + ", 15, 50);

// display text in green sansserif italic font font

g.setColor(Color.green);

g.setFont(new Font("SansSerif", Font.ITALIC, 30));

g.drawString("ALGORITHMS = ", 15, 100);

// display text in blueserif plain font

g.setColor(Color.blue);

g.setFont(new Font("Serif", Font.PLAIN, 40));

g.drawString("PROGRAMS", 15, 150);

// repaint frame

df.repaint();

}

}