Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

Softwareentwicklung in Java 6 by Mind Map: Softwareentwicklung in
Java 6
5.0 stars - 1 reviews range from 0 to 5

Softwareentwicklung in Java 6

This is just a demo map that you can delete right away, if you feel like it...

MindMap erstellt in der LV Informatik 2, Übungsgruppe 4, SS 2010

Personen

Assistent: Martin Krammer, martin.krammer@tugraz.at, Institut für Bauinformatik

Studienassistent: Michael Wittmayer,, michael.wittmayer@student.tugraz.at

Termine

genau - siehe TUGonline Gruppe 4

prinzipiell von 0900 (c.t.) bis 1045

Files aus der Übung

JavaFiles, Gruppe4

Javaprogramme sind hierarchisch strukturiert

ganz oben das "Project" (Java-Projekt)

quasi das Programm

dann "Packages", sind Ordnerstruktur auf der Festplatte, darin "Classes" (Java-Klassen), in .java Textdateien auf der Festplatte - der SourceCode (Quelltext), diese beinhalten, Variablen, während der Ausführung von Methoden., Methodenvariablen = lokale Variablen, innerhalb von Methoden deklariert, im jeweiligen Methodenblock public class Bruch{...public double wert{int counter...}...}, definieren Zustand in der Klasse/ im Objekt, Klassenvariablen/Instanzvariablen, außerhalb von Methoden deklariert, im jeweiligen Klassenblock public class Bruch{int zaehler...}, nur sichtbar/benutzbar/ansprechbar innerhalb des Blocks, in welchem sie deklariert wurden... Theman "Sichtbarkeit/Scope", Methods (Methoden), definieren Verhalten der Klasse, "was soll wie, wann etc. passieren"... Geschäftslogik, public static void main(Strg[] args), ist eine spezielle Methode, Java Compiler weiß, dass das Programm mit der main-Methode beginnt. "Startmethode", Klassen sind die programmatische Umsetzung/Abstraktion der Problemstellung/der Umwelt., z.B. in Übungsblock 1: wir wollen mit mathematischen Brüchen rechnen -> daher Klasse Bruch, die so gestaltet ist wie wir sie brauchen, Umsetzung der Realität nur soweit notwendig, obwohl man mathematische Brüche eigentlich "erweitern" kann, gibt es in unserem Programm keine public-Methode für diese Funktionalität.

Objektorientierung

Objekte werden zufolge einer Klassendefinition erstellt, "nach dem Schema, das mit der Klasse definiert wurde"

jedes Objekt hat alles (Eigenschaften, Verhalten) was die Klasse vorgibt., static-Eigenschaften von Klassen, static-Methoden, diese Methoden gehören zur Klasse. D.h. man ruft sie nicht auf einem Objekt der Klasse auf, sondern direkt. D.h. man muss nicht ein Objekt mit new erzeugen, um eine static Methode in dieser Klasse auszuführen., static-Methoden führen Sachen aus, die nicht unbedingt zu einem bestimmten Objekt gehören; die eher allgemein für alle Objekte dieser Klasse von Bedeutung sind bzw. komplett allgemein sind (z.B. main als Startmethode für das ganze Programm), static-Methoden können nur static-Variablen verwenden bzw. die in ihnen selbst deklarierten lokalen Variablen, das ist einleuchtend, da nicht-static Methoden/Variablen immer zum jeweilig gerade instantiierten Objekt gehören, static-Sachen aber für die Klasse selbst bzw. für alle Objekte gemeinsam., static-Variablen, "static-Variablen gehören zur Klasse." Jedes Objekt dieser Klasse "besitzt" nur ein und dieselbe Variable, nicht jedes eine eigene., ändert z.B. ein Objekt der Angestellten-Klasse die Variable static float steuersatz auf 0.33, dann ist dies für jeden Angestellten so., ein weiterer Einsatz von static-Variablen ist z.B. ein Zähler für instantiierte Objekte einer Klasse... bei jeder Objekterzeugung der Klasse Fahrzeug wird ein static int fahrzeugCounter inkrementiert (dies passiert idealerweise im Constructor der Klasse). Dadurch ist zu jedem Zeitpunkt schnell ersichtlich, wieviele Fahrzeuge derzeit im Programm "herumfahren".

Analogie zum Bauplan... Mit einem HausPlan (=Haus-Klasse) könnten durchaus mehrere gleiche Häuser (Haus-Objekte) gebaut werden.

Objekterstellung/ Instantiierung mit new-Operator, z.B. in Übungsblock 1: new Bruch(1,2), retourniert ein Bruch-Objekt mit Zähler 1 und Nenner 2., Bruch meinBruch = new Bruch(1,2), damit wird das neu instantiierte (mit new) Bruch-Objekt "gleich in die Bruch-Variable meinBruch gespeichert (mit =, Zuweisung)". meinBruch wird durch "Bruch meinBruch" deklariert.

Java ist eine Programmiersprache, die dieses Objektorientierungskonzept unterstützt.

nur weil ein Programm in Java geschrieben ist, ist dieses noch lange nicht schön objektorientiert...

basiert auf dem Zusammenspiel verschiedener Objekte

Zusammenspiel wird durch public-Methoden/Variablen möglich.

= Nutzung fremder Eigenschaften/Ressourcen

= Methodenaufrufe auf fremden Objekten

Unified Modeling Language - UML

zur Unterstützung der Findung des Programmkonzepts (Design)

schnell; visuell

aus den UML-Diagrammen lässt sich auch automatisch der Code(rumpf) generieren., dazu richtige UML-Tools notwendig, Omondo EclipseUML, Soyatec eUML2, damit erspart man sich das Abtippen der notwendigen Klassen/Methoden/Variablen

ISO-standardisiert

nicht nur für Software - auch zur Modellierung sonstiger Probleme

verschiedene Diagramme

Klassendiagramme (Struktur)

Aktivitätsdiagramme

Sequenzdiagramme usw.

vermittelt schnell, was das Programm können soll und wie es aufgebaut ist bzw. funktioniert.

Hilfestellungen

www.google.com

weiß alles

unzählige Bücher zu Java

z.B. sehr witzig und gedruckt: "Java von Kopf bis Fuß"

Online-Buch: "Java ist auch eine Insel"

Info2 Vorlesung/Übung

Datentypen

Referenz-/Objekttypen

Referenztypennamen beginnen mit einem Großbuchstaben und dann CamelCase

alles was mit new-Operator instantiiert wird, z.B. Bruch-Objekte, Constructor, ein Konstruktor steuert die Objekterzeugung bzw. leitet sie ein., heißt gleich wie die Klasse und hat eventuell Parameter z.B. Bruch(int zaehler, int nenner) oder Bruch(), es kann mehrere Konstruktoren geben, aber die Parameterliste muss unterschiedlich sein., quasi eine spezielle Methode, die man nur mit vorangestellten new-Operator aufrufen kann. Retourniert ein neues Objekt dieses Typs, Objekterzeugung = Instantiierung

sind jene Klassen die man selber schreibt. Klassen definieren einen neuen (Referenz-)Typ

Spezialfall BOXING, um elementare Typen mit Funktionalität zu erweitern gibt es Wrapper-Klassen, die diese in Objekte "einpacken". Vorteil: man hat plötzlich Zusatzfunktionen (Methoden) für die Typen zur Verfügung (z.B. Integer.parseInt(...))., dieses Boxing ermöglicht die Verwendung von elementaren Datentypen in generischen Datentypen z.B. ArrayList, Java macht dieses Ein- und Auspacken zur rechten Zeit automatisch... AUTOBOXING, eingebaute Wrapperklassen für die elementaren Typen, Boolean, Byte, Short, Integer, Long, Float, Double, Character, Boolean

Deklaration einer Variablen mit Referenztyp, z.B. Bruch myBruch;

elementare/primitive Datentypen

Wahrheitswerte, boolean, true oder false

Zeichen, char, 16bit, 0 bis 2^(16), 0 bis 65535

vorzeichenbehaftet, Ganzzahlen, byte, 8bit, -2^(8) bis 2^(8)-1 ..."-1 wg. Null", -128 bis 127, short, 16bit, -2^(16) bis 2^(16)-1 ..."-1 wg. Null", -32768 bis 32767, int, 32bit, -2^(31) bis 2^(31)-1 ..."-1 wg. Null", -2147483648 bis 2147483647, long, 64bit, Kommazahlen, float, 32bit, double, 64bit

String, ein Spezialfall, aber üblicherweise gleich zu verwenden ist, wie eine Variable mit elementarem Datentyp

Deklaration einer Variablen mit elementarem Typ, int myInteger;, short myShort;, float myFloat;, double myDouble;, char myCharacter;

Java 6 API

API - Application Programming Interface / Programmierschnittstelle

API nutzen beim Programmieren!

es ist nämlich unwahrscheinlich, dass man selbst effizienter programmiert, als die "Java-Hersteller"

Java enthält schon sehr viele nützliche Klassen und Methoden, die in unterschiedlichen Packages liegen

z.B. java.lang.Math-Klasse, Mathematik-Funktionen, enthält nur static-Methoden, daher keine Objekterzeugung mit new-Operator nötig/möglich, einfach z.B. Math.pow(2,3) für 2^(3), Math.round(3.3), gibt 3 zurück, Math.abs(-11), Betragsfunktion/Absolutwert, somit im Package java.lang

java.util.Scanner-Klasse, zum Einlesen von Text, von Tastatur (System.in), von einer Textdatei, somit im Package java.util

www: Java 6 API zum Nachschauen

diese Sachen zeigt auch Eclipse an, wenn ihr mit der Maus über eine dieser API-Klassen/Methoden drüberfahrt... warum? - Stichwort JavaDOC

Eclipse

IDE - Integrated Development Environment

praktisches Programm, das einem die Programmentwicklung sehr erleichtert

Plugins für eine Vielzahl von Anwendungen

z.B. SVN Plugin - SubClipse, Codeverwaltung (Versionen, Revision...) über "Subversion (SVN)", SVN von der TU Graz gut unterstützt, jeder an der TU Graz kann selbst SVN-Projekte anlegen... siehe TUGrazOnline Visitenkarte, lohnt sich nicht nur zur Programmierprojektverwaltung in Teams, sondern auch für andere Projekte, quasi Fileshareing/-authoring wo zentral immer das aktuelle Dokument liegt.