3. Grundregeln für die Java-Programmierung

Ähnliche Dokumente
Einführung in Javadoc

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Informationen zur Verwendung von Visual Studio und cmake

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Grundbegriffe der Informatik

4 Aufzählungen und Listen erstellen

Viele Bilder auf der FA-Homepage

Objektorientierte Programmierung

Anleitung über den Umgang mit Schildern

Rundung und Casting von Zahlen

Diana Lange. Generative Gestaltung Operatoren

Grundlagen der Theoretischen Informatik, SoSe 2008

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Professionelle Seminare im Bereich MS-Office

1 Mathematische Grundlagen

2.1 Präsentieren wozu eigentlich?

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Einführung in die Java- Programmierung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

IT-Basics 2. DI Gerhard Fließ

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Arbeiten mit UMLed und Delphi

Primzahlen und RSA-Verschlüsselung

1 Vom Problem zum Programm

Java Kurs für Anfänger Einheit 5 Methoden

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Zeichen bei Zahlen entschlüsseln

Informationsblatt Induktionsbeweis

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Übungsaufgaben zur Programmiersprache Python

Datenbanken Kapitel 2

Gezielt über Folien hinweg springen

Einführung in die C++ Programmierung für Ingenieure

Lehrer: Einschreibemethoden

10 Erweiterung und Portierung

Einführung in die Programmierung

Elternzeit Was ist das?

Einführung in die Programmierung

Was ist das Budget für Arbeit?

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Erstellen von x-y-diagrammen in OpenOffice.calc

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Übungsblatt 3: Algorithmen in Java & Grammatiken

Java: Vererbung. Teil 3: super()

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

25 kann ohne Rest durch 5 geteilt werden! ist wahr

Einführung in die Informatik Tools

Übungen Programmieren 1 Felix Rohrer. Übungen

Professionelle Seminare im Bereich MS-Office

Visual Basic Express erstes Projekt anlegen

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

GEONET Anleitung für Web-Autoren

Java Einführung Programmcode

IINFO Storyboard

Grundlagen. Kapitel 1

Informatik I Tutorium WS 07/08

Repetitionsaufgaben Wurzelgleichungen

Programmierkurs Java

Jetzt neu: Online Reporting Schritt für Schritt durch das Online Reporting (OLR) Online Liedmeldung

Prüfung Computation, Programming

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Erwin Grüner

Angewandte Mathematik und Programmierung

Einführung in. Logische Schaltungen

Gruppenrichtlinien und Softwareverteilung

Computeranwendung und Programmierung (CuP)

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Elexis-BlueEvidence-Connector

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Situa?onsbeschreibung aus Sicht einer Gemeinde

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Animationen erstellen

Welche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Geld Verdienen im Internet leicht gemacht

Formale Sprachen und Grammatiken

Quelltextähnlichkeit

Gesprächsführung für Sicherheitsbeauftragte Gesetzliche Unfallversicherung

Festigkeit von FDM-3D-Druckteilen

Zur drittletzten Zeile scrollen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Grundlagen, Informationen und Hintergründe von Wiki Systemen

Einführung in die Fuzzy Logic

Druckerscriptsprache

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Hinweise zum Übungsblatt Formatierung von Text:

Simulation LIF5000. Abbildung 1

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

Transkript:

3. Grundregeln für die Java-Programmierung Sprachaufbau von Java Programmen Stilistische Konventionen JavaDoc Allgemeine Informatik 2 SS09 Folie 2.1

Allgemeine Vorbemerkung Bei Programmiersprachen sind die lexikalischen, syntaktischen und semantischen Regeln, was korrekt ist und was nicht, sehr viel rigider und pedantischer als etwa in natürlichen Sprachen. Gründe: Es ist wesentlich schwieriger und aufwendiger, einen Spracherkenner und Compiler oder Interpreter für eine weniger pedantische Sprache zu entwickeln. Für natürliche Sprachen ist dieses Problem bis heute ungelöst! Die Möglichkeit mehrdeutiger Texte wäre ab einem gewissen Komplexitätsgrad der Sprache wohl kaum vermeidbar, bei normaler Kommunikation in natürlichen Sprachen ein häufiges Ärgernis, bei Programmiersprachen eine Katastrophe. Allgemeine Informatik 2 SS09 Folie 3.2

Allgemeine Vorbemerkung Bei natürlichen Sprachen sind die Regeln viel weniger rigide, wodurch ein automatisches Verständnis erschwert wird. Z.B. Resultat einer automatische Übersetzung der vorigen Folie D E Chinesisch D E Grund: Er ist enorm sogar mehr ist schwierig und eine kompliziertere Entwicklung spricht mehr erkenner und der Kompilator oder der Interpret ist eine Art von weniger pedantische Sprache Spricht diese Frage für die Natur, bis heutiger Tag die Lösung ist! Die vieldeutige Textmöglichkeit kann sein Anfänge von der Sprache irgendein komplizierter Grad vermutlich fast, zum nicht in der Lage zu sein zu vermeiden In der normalen häufigen Korrespondenzperiode wird in der Naturrede gestört Übersetzung: Babel Fish Programmierspracheunfall http://world.altavista.com/ Allgemeine Informatik 2 SS09 Folie 3.3

Der Sprachaufbau von Java Abstraktionsebenen Spezifikatorische Ebene Logische Ebene Semantische Ebene Syntaktische Ebene Lexikalische Ebene Übereinstimmung der Ergebnisse von Programmaufrufen mit den ursprünglich gesetzten Zielen Ergebnisse von Programmaufrufen ohne Fehler auf darunter liegenden Ebenen Bedeutung von Texten, die lexikalisch und syntaktisch korrekt formuliert sind Gruppierung von lexikalischen Einheiten und trennenden Elementen zu Ausdrücken Unterste Ebene, zusammengesetzt aus lexikalischen Einheiten und trennenden Elementen Allgemeine Informatik 2 SS09 Folie 3.4

Lexikalische Ebene Unterste Ebene, zusammengesetzt aus lexikalischen Einheiten und trennenden Elementen z. B. int i = 7; Schlüsselwörter: Zeichenketten mit besonderer Bedeutung, z. B. int, if, for, class, return in Java immer aus Kleinbuchstaben Bezeichner: Namen von Variablen, Methoden, Klassen, etc. beliebige Zeichenketten aus Buchstaben, Ziffern und Underscore dürfen nicht mit einer Ziffer anfangen Operatoren: Zuweisungen und Rechenzeichen Grundrechenarten +, -, *, / Vergleichsoperatoren <, >, etc. Logische Operatoren!, &&, Klammerzeichen ( ), { }, [ ] Literale: explizite Werte 4711; 3,14159; a ; Hello Separatoren: einer oder mehrere sind gleichbedeutend Leerzeichen, Tab, Umbruch Allgemeine Informatik 2 SS09 Folie 3.5

Syntaktische Ebene Korrekte Gruppierung von lexikalischen Einheiten und trennenden Elementen zu Ausdrücken Beispiele Öffnende und schließende Klammern dürfen nur in Paaren auftreten. Die Öffnende steht vor der Schließenden hintereinander (..)..(..)..(..) geschachtelt (..((..)(..)..)) Anweisung 1 Ein Schlüsselwort ist Teil eines Programmkonstrukts, darf nur dort und in festgelegter Reihenfolge auftreten 1 int i = 3; 2 while(i < 100) 3 { 4 if(i%2 == 0) 5 i--; 6 else 7 i*=2; 8 } Anweisung 2 Allgemeine Informatik 2 SS09 Folie 3.6

Semantische Ebene Der Begriff Semantik einer Sprache bezieht sich auf die Bedeutung von Texten, die lexikalisch und syntaktisch korrekt formuliert sind. Beispiel Bindungsstärke bei Operatoren Verschiedene Operatoren haben verschiedene Bindungsstärken, vgl. Punkt vor Strich in der Mathematik Aber durch Klammerung kann die Bindungsstärke beeinflusst werden int j = 3 (10/(2*(4+1))); Das Ergebnis ist j = 2; Das Ergebnis verändert sich, weil sich die Bearbeitungsreihenfolge geändert hat und damit die Bedeutung des Ausdrucks. int i = 3-10/2*4 + 1; Das Ergebnis ist i = -16; Allgemeine Informatik 2 SS09 Folie 3.7

Logische Ebene Ergebnisse von Programmaufrufen ohne Fehler auf darunter liegenden Ebenen Was heißt dann noch, dass ein Programm korrekt bzw. nicht korrekt ist? Beispiel: Fencepost Syndrom Wie viele Zaunpfähle braucht man, wenn der Zaun 20 Meter lang werden soll alle 2 Meter ein Pfahl stehen muss Ein Programm ist dann korrekt, wenn es alles das tut, was es soll mit allen erwünschten Effekten und darüber hinaus keine Effekte hat, die es nicht haben soll. Programmierfehler auf der logischen Ebene werden nicht beim Kompilieren mit Fehlermeldungen abgefangen. Sie können nur durch ausführliches Testen entdeckt und beseitigt werden. Allgemeine Informatik 2 SS09 Folie 3.8

Spezifikatorische Ebene Auf der spezifikatorischen Ebene geht es um Diskrepanzen zwischen den eigentlichen Intentionen des Programms und seiner Spezifikation Beispiel: Millenium Bug Für ein Datum sind Tag, Monat und Jahr abzuspeichern. Der Programmierer verwendet dafür zweistellige Zahlen und erzeugt Daten der Form 01.01.01 Bis zum 31.12.1999 stimmen Spezifikation und Programm, aber danach Idealbild einer Spezifikation Ein übersichtliches und systematisch strukturiertes Schriftstück Verständlich und zu gleich exakt, eindeutig formuliert Deckt jeden möglichen Fall, der prinzipiell auftreten kann, auch ab. In der Realität führt dies zu einem Dilemma der Softwareindustrie Spezifikation ist zu aufwändig, erfordert Zeit und Geld und wird doch nicht komplett gelesen. Allgemeine Informatik 2 SS09 Folie 3.9

Stilistische Konventionen Zusätzlich zu den syntaktischen Regeln, die eingehalten werden müssen, haben sich in der Java-Programmierung noch einige Konventionen durchgesetzt Konventionen müssen nicht eingehalten werden das Programm kann trotzdem übersetzt werden ist aber für andere Benutzer leichter verständlich Im Gegensatz zu anderen Programmiersprachen hat sich in Java ein Regelwerk für die Stylistik von Identifiern allgemein durchgesetzt. Viele vorgefertigte Java Bausteine und unzählige Java Anwendungsprogramme vertrauen darauf, dass diese Konventionen streng eingehalten werden. Beispiel: JavaDoc Allgemeine Informatik 2 SS09 Folie 3.10

Groß- und Kleinschreibung In Java wird zwischen Groß- und Kleinschreibung bei Bezeichnern unterschieden. hallo, Hallo und HALLO sind drei verschiedene Bezeichner. IF, If und if sind zulässige Bezeichner, obwohl if ein Schlüsselwort ist. Einige stilistische Regeln fürs Programmieren Wortanfänge innerhalb eines Bezeichners werden mit Großbuchstaben gekennzeichnet. Der Underscore sollte vermieden werden. Namen von Klassen beginnen mit Großbuchstaben, z. B. UrRobot Namen von Variablen und Methoden beginnen mit Kleinbuchstaben, z. B. putbeepers(amount) Allgemeine Informatik 2 SS09 Folie 3.11

Whitespace zur Trennung In Java macht es keinen Unterschied, ob als Trennelemente ein oder mehrere Leerzeichen oder Tabs verwendet werden. Deshalb folgende Regeln, die das Lesen des Quellcodes erleichtern: Nach jedem Semikolon kommt ein Zeilenumbruch. Bei Anweisungen, denen ein Block folgt, steht { am Ende der Zeile. Anschließend kommt ein Umbruch. Nach einer { wird der Text eingerückt, nach } ausgerückt. Codebeispiel 01 int quadratsumme(int n){ 02 03 int summe = 0; 04 if(n==0){ 05 return summe; 06 } 07 for(int i=0; i<=n; i++){ 08 summe += i*i; 09 } 10 11 return summe; 12 } Allgemeine Informatik 2 SS09 Folie 3.12

Sprechende Namen für Bezeichner Bezeichner als Kommentare Damit ein Programm lesbar und verständlich bleibt, sollten die Bezeichner so gewählt sein, dass sie die Methode oder Variable beschreiben. zeichnehausvomnikolaus für eine Methode, die das Haus vom Nikolaus zeichnet Methoden aus den Javabibliotheken wie drawstring, drawline, etc. Dies wird sehr wichtig bei größeren und komplexen Programmen oder wenn mehrere Personen am gleichen Projekt arbeiten. Allgemeine Informatik 2 SS09 Folie 3.13

Kommentare Richtig Kommentieren Einzeilige Kommentare sind der Form // Hier steht ein Kommentar Mehrzeilige Kommentare werden Slash und Stern begrenzt wie folgt /* */ Mehrzeilige Kommentare sind hilfreich, wenn längere Beschreibungen zu Methoden gegeben werden. Allgemeine Informatik 2 SS09 Folie 3.14

JavaDoc Was ist JavaDoc? Javadoc ist ein Werkzeug, das eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil: Dokumentation findet während der Programmierung statt Code und Dokumentation kann im Quelltext stehen Woher bekomme ich Javadoc? Das Programm javadoc ist in jedem Java 2 SDK von Sun Microsystems enthalten. Nach der Installation befindet es sich im gleichen Verzeichnis wie Javac. Allgemeine Informatik 2 SS09 Folie 3.15

JavaDoc Kommentare JavaDoc sind spezielle Kommentare, die als Anweisungen zur automatischen Dokumentation des Programms zu nützen. Syntax: JavaDoc Kommentare sind mehrzeilige Kommentare, die mit /** statt mit /* beginnen: /** <- JavaDoc!! * Hier steht ein mehrzeiliger JavaDoc Kommentar. * Die Sterne am Beginn jeder Zeile sind nicht * erforderlich, aber allgemein üblich */ Aus derartigen Kommentaren in einem Klassen-File erzeugt javadoc eine HTML-Seite, die diese Klasse dokumentiert. Allgemeine Informatik 2 SS09 Folie 3.16

JavaDoc Tags In den JavaDoc Kommentaren können bestimmte Tags verwendet werden um gezielt Informationen über ein Java-Objekt zu übermitteln. Allgemeine Tags: @author: Den Autor der Klasse / der Methode @version: Die Programm-Version der Klasse / der Methode Tags zur Dokumentation von Methoden: @param name: Die Beschreibung eines Parameters für eine Methode (kann mehrmals vorkommen, falls die Methode mehrere Parameter hat) @return: Beschreibung des Rückgabewerts eines Parameters und viele mehr Als kurze Einführung dient http://de.wikipedia.org/wiki/javadoc Allgemeine Informatik 2 SS09 Folie 3.17

Mit JavaDoc kommentiertes Beispiel-Programm 01 /** 02 * Dies ist ein Javadoc-Kommentar. 03 * @author David Thomas 04 * @version 9.3.98a 05 */ 06 public class Hello { 07 /** 08 * Sprich einen Gruß aus. 09 * 10 * @return String 11 */ 12 public String greet() { 13 System.out.println("Hallo, Welt!"); 14 return "Hallo,Welt!"; 15 } 16 } // class Hello Allgemeine Informatik 2 SS09 Folie 3.18

Mit JavaDoc kommentiertes Beispiel-Programm 01 /** 02 * Dies ist ein Javadoc-Kommentar. 03 * @author David Thomas 04 * @version 9.3.98a 05 */ 06 public class Hello { 07 /** 08 * Sprich einen Gruß aus. 09 * 10 * @return einen Gruß 11 */ 12 public String greet() { Javadoc Tags für Autor und Version Javadoc Tag für Rückgabewert 13 System.out.println("Hallo, Welt!"); 14 return "Hallo,Welt!"; 15 } 16 } // class Hello Javadoc Kommentar für Klasse Hello Javadoc Kommentar für Methode greet() Allgemeine Informatik 2 SS09 Folie 3.19

Erzeugtes Javadoc-Dokument Allgemeine Informatik 2 SS09 Folie 3.20

Erzeugtes Javadoc-Dokument Kommentar für Klasse Hello Kommentar für Methode greet() Allgemeine Informatik 2 SS09 Folie 3.21

JavaDoc macht also folgendes Erstellen eines Grundgerüsts für die Dokumentation Darstellung der Vererbungshierarchie z.b. Hello erbt von java.lang.object (automatisch) Automatisches Ergänzen von wesentlichen Informationen Geerbte Methoden Rückgabe-Typen von Methoden automatsich erstellte Konstruktoren Dazu werden die in den JavaDoc-Kommentaren und den den JavaDoc-Tags gefundenen Informationen ergänzt Allgemeine Informatik 2 SS09 Folie 3.22