+ All Categories
Home > Documents > Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren?...

Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren?...

Date post: 06-Apr-2015
Category:
Upload: volker-ahlers
View: 104 times
Download: 1 times
Share this document with a friend
33
Kolloquium Informatik und Unterricht 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern www.aplu.ch lloquium Informatik und Unterricht, Wintersemester Original: www.aplu.ch/kolloquium
Transcript
Page 1: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 1

Soll und kann ich mit Java programmieren?

Aegidius Plüss, Bern

www.aplu.ch

Kolloquium Informatik und Unterricht, Wintersemester 2007

Original: www.aplu.ch/kolloquium

Page 2: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 2

Arbeitsthesen, Preconditions

• Gibt eine fundamentale Einsicht in die Kerninformatik• Ist nicht ICT, Programmierkenntnisse sind für die

meisten Computerbenützer unnötig• Ist für viele Webdesigner, Mathematiker, Natur-

wissenschafter und Ingenieure notwendig• Entwickelt ganz allgemein die intellektuellen

Fähigkeiten und das Problemlösungsverhalten• Fördert die Phantasie und macht Spass• Gehört in den Unterricht, insbesondere im Gymnasium

(Ergänzungsfach, Grundlagenfach?)

Programmieren

Page 3: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 3

Inhalt

1. Teil: Tabula rasa• Wir beginnen von ganz vorne, ohne Vorurteile• Wir sind "erblich" (von unseren eigenen Lehrpersonen) unbelastet

2. Teil: Programmier-Paradigmen• Was ist Programmieren?• Prozedurale Programmierung, Kapselung• Datentypen, streng typisierte Sprachen• Formularorientierte Programmierung

3. Teil: To OOP or not to OOP, that is the question• Falls GUI, keine Alternative!• Optimales methodisches Vorgehen:

• Zuerst ohne OOP, dann OOP hinzufügen• OOP von Anfang an

Page 4: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 4

Inhalt

4. Teil: Eignet sich Java als Unterrichts- und Einsteigersprache?• Wahl der IDE• Anatomie eines Java-Programms• OOP in fünf Minuten• Vermeidung von Vorwärtsbezügen• Didaktische Klassenbibliotheken

5. Teil: Einstiegsvarianten

6. Teil: Sample Session: OOP mit Java

7. Teil: Diskussion (hoffentlich heftiger Protest)

Page 5: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 5

1. Teil: Tabula rasa

• Die Informatik hat zwar eine historische Dimension. Lehrplan und Methodik eines Programmierkurses snd nicht daran zu orientieren (Hinweise genügen)

• Die meisten Lehrpersonen sind durch ihren eigenen Wertegang, ihre Kenntnisse und ihre Vorlieben vorbelastet (Hardware-Plattform, Einsatzgebiet, Be-triebssystem, Entwicklungsumgebung, Programmier-sprache). Junge Menschen sind unbelastet

• Computer sind ausschliesslich sequentielle Maschinen. Diese Vorstellung ist falsch: Ereignisgesteuerte Pro-gramme, Threads, Client-Server-Systeme

Page 6: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 6

Was ist Programmieren?

• Programmieren bezeichnet die Tätigkeit, Computer-programme (Software) zu erstellen (sehr pragmatisch, was sind Computerprogramme?)

• Programmieren ist die Umsetzung von Algorithmen in eine computerlesbare Form (etwas vornehm, der meiste Code besteht nicht aus Algorithmen, was sind Algorithmen?)

• Programmieren ist eine Kunst...

Page 7: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 7

2. Teil: Programmier-Paradigmen

• Programme sollten lediglich die drei Grundstrukturen Sequenz, Selektion, Iteration aufweisen (Böhm, Jacopini, 1966)

• Programme sollten aus funktionalen Blöcken (klassisch: Prozeduren, Funktionen, Methoden, Subroutinen; modern: Module, Objekte) bestehen, deren Schnittstelle klar beschrieben wird, und die interne Daten vor dem Zugriff schützen (Geheimnisprinzip, Kapselung). Sie sollten möglichst keine Veränderung an äusseren Daten vornehmen (keine Seiteneffekte)

• Wichtige Begriffe: globale und lokale Variable, formale und aktuelle Parameter, Werte- und Variablenparameter

Prozedurale Programmierung, Kapselung

Dominiert das Programmieren seit 50 Jahren bis zum heutigen Tag!

Page 8: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 8

Prozedurale Programmierung, Kapselung

Daten (Fruchtfleisch, Kerne)

Methoden (Würmer)

Kapsel (Haut schützt)

Interface(Loch in Schutzhülle)

Page 9: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 9

<?php

function getMax($a, $b)

{

if ($a > $b)

return $a;

return $b;

}

if (isset($_GET["Submit"]))

{

$a = $_GET["ta"];

$b = $_GET["tb"];

$result = getMax($a, $b);

}

?>

<html><body>

<form name = "form1" method = "get">

<p>1. Zahl: <input type="text" name = "ta" value = "<? echo $value1 ?>"></p>

<p>2. Zahl: <input type="text" name = "tb" value = "<? echo $value2 ?>"></p>

<p>Resultat: <input type="text" name = "tr" value = "<? echo $result ?>" ></p>

<p><input type="submit" name = "Submit" value = "Submit"> </p>

</form></body></html>

Beispiel: PHP

Anwendungslogik

Präsentationslogik

Page 10: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 10

• Ist PHP weit verbreitet? Brauchst Du es?

• Ist PHP einfach? (Ist Java, C++, usw. einfach?)

• Ist PHP wesentlich anders als andere prozedurale Programmiersprachen (Syntax, Semantik)?

• Ist PHP eine universelle höhere Programmiersprache?

• Ist es gut, dass man erst dann mit dem Erlernen einer Programmiersprache beginnt, wenn man für eine Website PHP braucht?

• Wieviel Zeit verbratet man mit dummen Fehlern in PHP, wenn man keine Ahnung vom Programmieren hat?

• Umgekehrt: Wie schnell hat man PHP im Griff, wenn man vorher die Grundprinzipien des Programmierens kennt?

PHP, einige Fragen...

"PHP ist ein performanter Hack!"

Page 11: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 11

Datentypen, streng typisierte Sprachen

• Streng typisiert:Eine Variable besitzt einen zur Compilationszeit festgelegten Datentyp. Es können ihr nur Werte von diesem Datentyp zugewiesen werden

• Nicht typisiert:Eine Variable erhält zu Laufzeit den Datentyp des zugewiesenen Werts

Streng typisierte Sprachen Nicht typisierte Sprachen

Pascal (Familie)

C/C++

Java

VB.NET

PHP

Python

VBScript

Page 12: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 12

Typisierte versus nicht typisierte Sprachen

Typisierte Sprachen• Häufige Programmierfehler

werden zur Compilationszeit angezeigt (sind Syntaxfehler)

• Datentypen spielen insbesondere in der OOP eine fundamentale Rolle (Klassen sind Datentypen)

• Für robuste, fehlertolerante System geeignet

Nicht typisierte Sprachen• Für den schnellen Einstieg und das

schnelles Prototyping gut geeignet• Meist Interpreter, einzelne

Anweisungen können als Test ausgeführt werden

• Als Zusatz zu bestehenden Systemen geeignet: Scriptsprachen, Websprachen

Nachteile• Aufwändiger, das Typcasting

(Umwandlung von Typen) ist anspruchsvoll

• Am Anfang etwas gewöhnungs- bedürftig, da in der Mathematik keine Typenbindung von Variablen

• Viele dumme, aber auch heikle Programmierfehler werden erst zu Laufzeit (oder nie) gemerkt

• Der Datentyp ist zentraler Begriff einer Programmiersprache. Er wird als sekundär betrachtet

Vorteile

Page 13: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 13

Formularorientierte Programmierung = "neues" Paradigma?

• Visual Basic verdankt seinen Erfolg:• Nachfolger altgedienter Interpreter (Turbo Basic, QuickBasic, Comodore Basic, usw.)• Formularbasierte Entwicklungsumgebung zur schnellen interaktiven Erstellung von

GUI-Applikationen• Integration in die .NET-Sprachen, zusammen mit C++ und C#• Gratis-Version der Entwicklungsumgebung "Visual Studio Express"

• Formularorientierte Programmierung ist• eventgesteuert, d.h. gemäss der Programmstruktur:

"wann immer das Ereignis eintritt, dann tue..."• objektorientiert: GUI-Elemente besitzen

• Eigenschaften (Attribute, Properties, Instanzvariablen) • Verhalten (Subroutines, Methoden, Prozeduren, Funktionen, Operationen)

Page 14: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 14

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim value1 As String Dim value2 As String Dim a As Integer Dim b As Integer value1 = TextBox1.Text value2 = TextBox2.Text a = CInt(value1) b = CInt(value2) TextBox3.Text = CStr(Ggt(a, b))End Sub

Private Function Ggt(ByVal a As Integer, ByVal b As Integer) As Integer If b = 0 Then Return a End If Return Ggt(b, a Mod b)End Function

Beispiel: VB.NET

Installation von Visual Studio Express gemäss Anhang.VB Sample Session:

Page 15: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 15

• Ist VB weit verbreitet? (MS-Windows only)• Ist VB einfach?• Ist die Syntax von VB modern?• Ist VB eine volle objektorientierte Programmiersprache? • Wie schnell kann man unter VB animierte Grafik machen

(z.B. Julia-Menge)?• Ist in der Ausbildung die Ausrichtung auf formular-

orientierte Programmierung statthaft? Wo sind die klassischen sequentiellen Abläufe?

Visual Basic, einige Fragen

Dieselben Fragen könnte man bezüglich Delphi/Lazarus stellen... (mit etwas unterschiedlichen Antworten)

Page 16: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 16

3. Teil: To OOP or not to OOP

• OOP gehört zu den grundlegenden Informatikkenntnissen• Falls GUI- und Fensterprogrammierung, ist OOP eine Notwendigkeit!• Hybride Sprache: zuerst ohne OOP/GUI, dann hinzufügen? (Typisch

C/C++)• Zwei Sprachen: zuerst Pascal, LOGO, Scriptsprache, dann

OOP/GUI?

Shakespeare's Hamlet:

To be, or not to be: that is the question:Whether 'tis nobler in the mind to sufferThe slings and arrows of outrageous fortune,Or to take arms against a sea of troubles,And by opposing end them? To die: to sleep;No more

Sein oder Nichtsein; das ist hier die Frage:Obs edler im Gemüt, die Pfeil und SchleudernDes wütenden Geschicks erdulden oder,Sich waffnend gegen eine See von Plagen,Durch Widerstand sie enden? Sterben - schlafen Nichts weiter!

Page 17: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 17

4. Teil: Eignet sich Java im Unterricht?

• Setzt man didaktische Programmbibliotheken ein, so ist der Einstieg sanft und motivierend (Turtle, Grafikfenster)

Ja, Sie können sich an Java heran wagen...

• Java ist die Programmiersprache mit der grössten Zahl von Lehrbüchern und Online-Beiträgen

• Java wird weltweit an Lehrinstitutionen am häufigsten eingesetzt

• Java ist auf alle üblichen Plattformen (Mac, Windows, Linux) gleichartig einsetzbar (sogar gleiche IDE)

These:Java ist eine Programmiersprache, die den Ansprücheneiner modernen Unterrichtssprache gerecht wird, und dies aus folgenden Gründen:

Page 18: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 18

Wahl der Entwicklungsumgebung (IDE)

• Die IDE ist die erste und dann die tägliche Berührung mit der Programmiersprache. Besonders geeignet:• NetBeans (www.netbeans.org)• Eclipse (www.netbeans.org)• JCreator (www.jcreator.com)• Online-Editor PHBern (www.java-online.ch)

• Meine bevorzugte IDE: NetBeans• kostenlos• mehrere Sprachversionen (auch Deutsch)• mehrere Plattformen (Linux, Mac, Windows)• intelligenter Editor (automatische Syntaxprüfung)• hervorragender GUI-Builder• Kurzanleitungen: www.netbeans.org, www.aplu.ch/forum

Page 19: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 19

Online-Editor (www.java-online.ch)

• Praktisch kein Installations-aufwand (nur JRE)

• Basiert auf Applets und WebStart

• Integrierte, im Unterricht er-probte Lernprogramme• auch zum Selbststudium• Quellcode kann im Editor

übernommen und ausgeführt werden

• Entwicklungsumgebung für Lego-Robotik (Edit/Compile/Download)

• Entwicklungsumgebung für Handy-Programmierung (J2ME)

Page 20: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 20

Anatomie eines Java-Programms

// MyTurtle.java import ch.aplu.turtle.*; class MyTurtle { Turtle t = new Turtle(); MyTurtle() { } public static void main(String[] args) { new MyTurtle(); } }

Kommentar

Bibliotheksimport

Klassendeklaration

Erzeugung einer Applikationsinstanz

Methodenblock

Entry point (main)

Konstruktor

Instanzierung der Turtle

Page 21: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 21

Paradigmenwechsel

Ein Programm ist nicht Aneinanderreihung von Code10 INPUT A20 INPUT B30 IF A > B PRINT 'A IST GROESSER ALS B'40 GOTO 6050 PRINT ‘A IST KLEINER ALS B’60 END

sondern: Ein Programm ist ein Objekt! (Instanz der Applikationsklasse)

class MyProg{ main() { new MyProg() }}

Page 22: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 22

Tue es nicht!

• Man kann zwar in Java auch (fast) prozedural (ohne OOP) programmieren, indem man den Code in main() schreibt und alle Methoden static macht:

class TueEsNicht { static int ggt(int a, int b) { if (b == 0) return a; return ggt(b, a % b); } public static void main(String[] args) { System.out.println(ggt(15, 12)); } }

Page 23: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 23

Tue es so!

import ch.aplu.util.*; class TueEsSo { TueEsSo() { Console c = new Console(); c.print("a: "); int a = c.readInt(); c.print("b: "); int b = c.readInt(); c.print("Der Ggt ist " + ggt(a, b)); } int ggt(int a, int b) { if (b == 0) return a; return ggt(b, a % b); } public static void main(String[] args) { new TueEsSo(); } }

Konstruktor

Consolefenster

Methoden des Consolefensters

Methode(nicht statisch)

Applikationsinstanz erzeugen

Page 24: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 24

OOP in 5 Minuten: Kapselung in Klassen

Instanzvariablen(Eigenschaften)

Konstruktor(Initialisierung)

Methode(Verhalten)

// ------------------------ Klasse Rechteck ------------------ class Rechte { double l; double b; public Rechteck(double laenge, double breite) { l = laenge; b = breite; } public void zeige(GPanel p, double xMitte, double yMitte) { p.move(xMitte, yMitte); p.rectangle(l, b); } public void fuelle(GPanel p, double xMitte, double yMitte) { p.move(xMitte, yMitte); p.color(Color.red); p.fillRectangle(l, b); } }

Methode(Verhalten)

Page 25: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 25

OOP in 5 Minuten: Vererbung

Konstruktor

Initialisierung der Basisklasse

Ein Quadrat IST EIN Rechteck, kennt daher zeige()

// ------------------------ Klasse Quadrat ------------------- class Quadrat extends Rechteck { public Quadrat(double seitenlaenge) { super(seitenlaenge, seitenlaenge); } public void fuelle(GPanel p, double xMitte, double yMitte) { p.move(xMitte, yMitte); p.color(Color.green); p.fillRectangle(l, b); } }

Methode(überschrieben)

Klassendeklaration(abgeleitete Klasse)

UML-Diagramm:

Kla

ssen

hier

arch

ieBasisklasse(Mutter)

Abgeleitete Klasse(Kind)

Page 26: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 26

OOP in fünf Minuten: Polymorphie

Applikationsklasse

Instanzierung GPanel

Instanzierung Objekte

Container-Klasse

Elemente hinzufügen

Elemente durchlaufen

Instanzierung derApplikationsklasse

public class App { public App() { GPanel p = new GPanel(0, 10, 0, 10); Rechteck r1 = new Rechteck(4, 2); Quadrat s1 = new Quadrat(3); Rechteck r2 = new Rechteck(1, 8); Vector<Rechteck> v = new Vector<Rechteck>(); v.add(r1); v.add(s1); v.add(r2); for (Rechteck re : v) re.zeige(p, 2.5, 5); for (Rechteck re : v) re.fuelle(p, 7.5, 5); } public static void main(String[] args) { new App(); } }

Elemente durchlaufen

Es wird das zum Datentyp gehörende fuelle() aufgerufen

Page 27: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 27

Ist der Mathematikunterricht einfacher?

Nichts ist umsonst: • Hochsprung• Geigenspiel• Elektrodynamik• ...• Programmieren Freude herrscht, wenn

Widerstand gebrochen!

Page 28: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 28

Vermeidung von Vorwärtsbezügen

• Die Kunst des Unterrichtens besteht darin, den Unter-richt in angepasst kleine Lernschritte zu strukturieren, dass der Lernende weder unter- noch überfordert wird.

• Neue Begriffe sollen unter Berücksichtigung des gegen-wärtigen Wissensstandes und der Persönlichkeit des Lernenden eingeführt werden und müssen von ihm lo-gisch nachvollziehbar sein.

• Zu einem systematisch aufgebauten Unterricht gehört der weitgehende Verzicht auf Unerklärbares und auf Hinweise, dass ein Verständnis erst später möglich sei.

Page 29: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 29

• Das ominöse Main:public static void main(String[] args)

• Variablenkonzept:• Basistypen: int, double, usw. sind keine Objekte• Referenztypen: Variablendeklaration erzeugt kein Objekt, sondern

nur eine Referenz auf ein Objekt. Diese werden ausschliesslich mit new erzeugt:Turtle t; // Variablendeklartion t = new Turtle(); // Objekterzeugung und Zuweisung

• Es gibt nur Werte- aber keine Variablenparameter• Es gibt keine Zeiger, denn alle Referenzen sind bereits Zeiger

Java's Schwächen als Unterrichtssprache

Page 30: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 30

Didaktische Klassenbibliotheken

• Besonders geeignet:– Turtle (Mehrere Turtles im gleichen Fenster)– Grafikfenster mit Benützerkoordinaten (GPanel)– Konsolenfenster für Ein- und Ausgabe (Console)– Hilfsklassen: HiResTimer, SoundPlayer, JRunner

• Beim Einstieg kann weitgehend auf den OOP-Klassenentwurf (Vererbung, Polymorphie) verzichtet werden

• Für die Programmierung klassischer Algorithmen geeignet. Beispielprogramme aus C/C++, Basic und Pascal können in der Regel leicht übernommen werden

• Ohne didaktische Klassenbibliotheken ist der Einstieg in Java schwierig(zu?)

Page 31: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 31

Drei Arten der Komplexitätsreduktion

• Klassenbibliotheken verdecken zwar eine Menge an kompliziertem Code, es werden aber nicht alle Fallgruben entfernt, sondern der Lernende muss sich in der harten Wirklichkeit zurechtfinden

• Glashaus-Systeme: der Lernende befindet sich in einer "geschützten Umgebung". Beispiele:• C++/Champ (enthält Multiple Turtle, CPWindow)• Logo (turtlebasiert!)• Kara (turtlebasiert!)

• Lernsprachen sind eine alte Tradition der ETH Zürich, gemäss der Lebensphilosophie von N. Wirth: "Gibt es keine Programmiersprache, welche meinen Vorstel-lungen entspricht, so erfinde ich sie"

Page 32: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 32

5. Teil: Java-Einstiegsvarianten

• "Hello World" ausschliesslich mit dem Java API• konsolenorientiert• formularorientiert (GUI-Builder)

• Applets• Web-Programmierung (JSP)• Java exemplarisch:

• Turtle (Logo orientiert)• Console (traditionell)• GPanel ("ein Bild sagt mehr als tausend Worte")• Lejos (robotikorientiert, Java für Lego Mindstorm)• J2ME (handyorientiert)

Page 33: Kolloquium Informatik und UnterrichtWintersemester 2007 1 Soll und kann ich mit Java programmieren? Aegidius Plüss, Bern  Kolloquium Informatik.

Kolloquium Informatik und Unterricht Wintersemester 2007 33

Sample Session: OOP mit Java

• Top-Down-Design• Sterne sind Objekte mit

• Eigenschaften (Grösse, Farbe, usw.): Instanzvariablen

• Verhalten ("erscheine an diesem Ort"): Methoden

• Es lassen sich beliebig viele Sterne (Objekte) erzeugen

• Zwei Programmkonzepte:• sequentieller Code (klassisch)• formularorientiert (eventgesteuert)

Weihnachtssterne

Let's do it (Learning by Doing)


Recommended