Java Einführung. SOFTWARE-ENTWICKLUNG Kapitel 1

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

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Java-Schulung Grundlagen

Java Einführung Programmcode

1. Der Einstieg in Java. Was heißt Programmieren?

JAVA als erste Programmiersprache Semesterkurs

Vorkurs Informatik WiSe 15/16

Programmieren was ist das genau?

VBA-Programmierung: Zusammenfassung

Applications Applets (eingeschränkte Rechte)

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

Formale Sprachen und Grammatiken

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

IT-Basics 2. DI Gerhard Fließ

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

SEP 114. Design by Contract

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Einführung in Eclipse und Java

1. Der Einstieg in Java

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Primitive Datentypen

Java: Vererbung. Teil 3: super()

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Programmierkurs Java

Grundlagen der Programmierung UE

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

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

Pragmatik von Programmiersprachen

Vorlesung Informatik II

Grundlagen der Programmierung UE

Die Softwareentwicklungsphasen!

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

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

Objektorientierte Programmierung

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

Tutorium Rechnerorganisation

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Einführung in Javadoc

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Übungen zur Softwaretechnik

Java Virtual Machine (JVM) Bytecode

Einführung in die Programmierung

Grundbegriffe der Informatik

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

4. AuD Tafelübung T-C3

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Programmierung für Mathematik (HS13)

Computeranwendung und Programmierung (CuP)

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Informatik I Tutorium WS 07/08

LEHRSTUHL FÜR DATENBANKEN

Programmieren in Java

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Java Kurs für Anfänger Einheit 5 Methoden

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Smalltalk vs. Java c Chris Burkert Smalltalk versus Java

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Grundlagen. Kapitel 1

Praktikum Grundlagen der Programmierung. Diverse Grundlagen. Dr. Karsten Tolle

Testen mit JUnit. Motivation

1. Java Grundbegriffe

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Abschnitt 16: Objektorientiertes Design

Einführung in die C-Programmierung

Algorithmen und Datenstrukturen

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Java für C++ Programmierer

Client-Server-Beziehungen

Einführung in PHP. (mit Aufgaben)

C# im Vergleich zu Java

Einführung in die Programmierung für Wirtschaftsinformatik

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

Dr. Monika Meiler. Inhalt

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Praktikum: Einstieg: Arbeitsplatz, JCreator

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Einführung in die Informatik Tools

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Propädeutikum zur Programmierung

Problemorientierte Programmiersprachen Nachteile von Programmen in Maschinensprache sehr aufwendig bei komplexeren Aufgabenstellungen fehleranfällig

Java Einführung Abstrakte Klassen und Interfaces

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Transkript:

Java Einführung SOFTWARE-ENTWICKLUNG Kapitel 1

Inhalt dieser Einheit Phasen eines Softwareprojekts Algorithmus Überblick über (Programmier-) Sprachen Wie funktioniert JAVA? 2

Software Engineering Fachgebiet der Informatik stellt Methoden Werkzeuge zur Herstellung und Anwendung von Software bereit. 3

Die Phasen eines Softwareprojekts (klassisch sequentielles Software-Life-Cycle-Modell) Betrieb und Wartung Systemtest Problemstellung, Idee Implementierung und Komponententest Problemanalyse Spezifikation = Analyse (Komponenten-) Entwurf = Design 4

Problemanalyse und Planung Was? Erhebung des Ist-Zustandes Abgrenzung des Problembereichs Skizzieren der Bestandteile des geplanten Systems erste Abschätzung des Umfanges und der Wirtschaftlichkeit Erstellung eines groben Projektplans Benutzeranalyse Aufgabenanalyse 5

Analyse: Spezifikation Was? Genaue Festlegung des Leistungsumfanges des geplanten Systems (Pflichtenheft) Umsetzung der Anforderungen in ein Modell, welches die künftige Funktionalität des zu entwickelnden Produktes vollständig beschreibt Funktionsmodelle, Datenmodelle, Ereignismodelle, Interaktionsmodelle, Workflow- Modelle noch unabhängig von der Implementierung 6

Design: System- und Komponentenentwurf Wie? Umsetzung, der in der Spezifikation erstellten Modelle in eine formale Form Festlegung, welche Systemkomponenten die vorgegebenen Anforderungen abdecken werden Definition der Systemkomponenten (Schnittstellen!) Entwurf der algorithmischen Struktur (Pseudocode) Entwurf der Datenstrukturen unabhängig von der Implementierung! 7

Implementierung und Komponententest Umsetzung der Ergebnisse der Entwurfsphase in eine rechnerausführbare Form Verfeinerung der Komponenten und Algorithmen Codierung in der gewählten Programmiersprache Komponententests 8

Systemtest Wechselwirkungen der Systemkomponenten unter realen Bedingungen prüfen Fehler aufdecken sicherstellen, dass die Systemspezifikation erfüllt ist (aus Pflichtenheft) Freigabe der Software 9

Betrieb und Wartung Fehler, die erst während des tatsächlichen Betriebs auftreten beheben Systemänderungen und Systemerweiterungen durchführen 10

Andere Software- Engineering Modelle Wasserfall-Modell Spiral-Modell Prototyping-orientiertes Life-Cycle-Modell Objektorientiertes Life-Cycle-Modell Objekt- und prototyping-orientiertes Life- Cycle-Modell 11

Beschreibung von Abläufen (Bsp. Kochrezept) Man nehme 2 dag Schmalz und erhitze es in einer Pfanne. Inzwischen versprudelt man 3 Eier mit einer Brise Salz. Wenn das Fett heiß ist, gieße man die Eier in die Pfanne. Mit einer Gabel umrühren, bis die Eier stocken, sofort heiß servieren...'' Kochrezepte Gebrauchsanweisungen Algorithmen Programme 12

Algorithmus (Definition) Ein Algorithmus ist ein Plan zur Lösung gleichartiger Probleme mit Hilfe einer endlichen Folge eindeutiger, ausführbarer Schritte bestehend aus - elementaren Anweisungen - in einer geeigneten Sprache - die sequentiell (schrittweise) durchgeführt werden. Ein Programm ist ein Algorithmus formuliert in einer bestimmten Programmiersprache. 13

Algorithmus ( Bsp. Telefonnummersuche) "Suche die Telefonnummer zu einem gegebenen Namen in einem beliebigen Adressbuch 1. Gehe zum ersten Eintrag im Adressbuch 2. Vergleiche den aktuellen Eintrag mit dem gesuchten Namen 3. Bei Gleichheit: gib die zugehörige Telefonnummer aus und halte an sonst gehe zu Schritt 4 4. (Ungleichheit) Wenn noch Einträge im Adressbuch vorhanden sind: nimm den nächsten Eintrag und gehe zu (2) sonst gehe zu Schritt 5 5. melde Misserfolg und halte an Name Tel.Nr. Neumann, Gustaf 12235 Neumann, Gustav 13356 14

Definition einer Sprache Wie definiert sich eine Sprache? Aus der Menge der Symbole (Worte) können Sätze gebildet werden. Syntax: Die Regeln für das Bilden gültiger Sätze aus diesen Symbolen (=''Grammatikregeln''). Semantik: Die Bedeutung der gültigen Sätze. Bsp: 2+4=7 ist in der Sprache der Mathematik syntaktisch richtig, aber semantisch falsch. 15

Bsp: Regelgramatik Syntaxregeln (BNF) <Ziffer> ::= 0 1 2 3 4 5 6 7 8 9 <Vorzeichen> ::= + - <Ziffernfolge> ::= <Ziffer> <Ziffernfolge><Ziffer> <Zahl> ::= <Ziffernfolge> <Vorzeichen><Ziffernfolge> Terminale Symbole werden nicht mehr abgeleitet {0,1,2,...,9} Nicht-terminale Symbole gekennzeichnet durch <...> bedeutet eine Auswahl (oder) Alles was von <Zahl> (Startsymbol) abgeleitet werden kann, ist eine gültige Zahl 16

Bsp: Syntaxdiagramm Ziffer 0 1 Ziffernfolge Ziffer Ziffernfolge Ziffer 9... Zahl Vorzeichen + - Ziffernfolge Vorzeichen Ziffernfolge 17

Natürliche versus formale Sprache Natürliche Sprachen sind vielfach syntaktisch und/oder semantisch mehrdeutig. ( Dings wird aus dem Kontext erkannt) Natürliche Sprachen sind fehlertolerant. Der vorgegebene Wortumfang natürlicher Sprachen ist sehr groß. (80000 Worte Langenscheidt vs. 51 Java) Eine Programmiersprache ist eindeutig und ist primitiv genug, um in Maschinencode übersetzt werden zu können. 18

Java-Wortschatz reservierte Worte abstract boolean break byte case catch char class continue default do double else extends false final finally float for if implements import instanceof int long native new null private protected public return static super switch synchronized this throw throws transient try void volatile while true short interface package assert enum strictfp * derzeit ohne Verwendung byvalue* cast* const* future* generic* goto* inner* operator* outer* rest* var* 19

Programmiersprachen Definition Eine Programmiersprache ist eine Sprache zur Formulierung von Rechenvorschriften bzw. Anweisungen (Datenstrukturen und Algorithmen), die von einem Computer ausgeführt werden können, hat eine eindeutig definierte Syntax (welche Zeichenfolgen sind erlaubt) und Semantik (was bewirken die Zeichenfolgen auf dem Rechner), bildet die wichtigste Schnittstelle zwischen Rechner und Programmierer. 20

Wie kann ich eine Sprache lernen? ÜBEN und ANWENDEN! Wie beim Lernen eines Musikinstruments! Notenkenntnis und Erkennen der Tasten ist zuwenig! 21

Programmiersprachen 22

Programmiersprachen Übersicht Maschinensprache Programme in Maschinensprache bestehen aus Maschinenbefehlen, die als Folge von Nullen und Einsen im Rechner dargestellt werden. Nur Maschinensprache kann vom Prozessor verarbeitet werden. Assembler Sprachen Die Bitkombinationen der Maschinenbefehle werden durch ein leicht zu merkendes Symbolwort ausgedrückt werden (MOV A L). Höhere/symbolische Programmiersprachen Sind an die menschlichen Denkweisen angepasst (sie sind problemorientiert und nicht mehr maschinenorientiert). Höhere Programmiersprachen erlauben die Formulierung von Programmen in einer vom Zielrechner unabhängigen Notation. Mit Hilfe eines Übersetzungsprogramms (Compiler) werden Programme einer höherer Programmiersprache in Maschinenprogramme übersetzt. 23

Höhere Programmiersprachen Übersicht Strukturierte Programmiersprachen Höhere Programmiersprachen, die das Modulkonzept unterstützen BASIC, PASCAL, C, Modula Objektorientierte Programmiersprachen Höhere Programmiersprachen, welche Daten und Anweisungen nicht trennen sondern zusammen als Objekte behandeln. Objekte stehen miteinander in Beziehung und kommunizieren miteinander durch Versenden von Nachrichten (Messages). Das Empfängerobjekt hat für jede Nachricht, die es versteht, einen eingebauten Algorithmus (Methode genannt). C++, C# und Java Deskriptive Programmiersprachen dient zur Beschreibung der Eigenschaften gesuchter Informationen (üblicherweise Daten aus einer Datenbank) SQL Logische Programmiersprachen Die logische Programmierung beruht auf der Erkenntnis, dass einer Untermenge der Prädikatenlogik eine prozedurale Interpretation gegeben werden kann. PROLOG 24

Programmiersprachen grafische Übersicht 25

Entwicklung von prozeduralen Programmiersprachen John v. Neumann: Programmierbare Rechenmaschine IBM: PL/1 General Purpose PL N. Wirth: Pascal Strukturierte Programmierung N. Wirth: Modula-2 Verbesserte Datenkapselung Dahl: Simula Simulation D. Ritchie (AT&T): C Systemprogrammierung B. Stroustroup (AT&T): C++ Objektorientierte Erweiterung von C Sun: Java vereinfachte und gestutzte Weiterentwicklung von C++ 1940 1964 1967 1971 1974 1980 1987 1995 26

Java-Geschichte 1991: Projekt ``Green`` (consumer electronics) bei Sun zunächst basierend auf C++, das sich aber im Hinblick auf Sicherheit, Portabilität und Zuverlässigkeit als unzureichend herausgestellt hatte => Entwicklung einer eigenen Sprache ``Oak``, später Java 1994: Entwicklung des HotJava-Browsers (Java Applets) 1995: offizielle Vorstellung von Java, Netscape lizenziert Java 1996: Gründung von JavaSoft bei Sun, Release 1.0 des Java Development Kits (JDK) 1997: JDK 1.1 1999: JDK 1.2 = Java 2 Platform 2000: JDK 1.3 2001: SDK 1.4 2005: JDK 5.0 = Version 1.5 27

Was ist Java? Objektorientiert Einfach (keine Pointer, automatische Garbage Collection, nur einfache Vererbung) Plattformunabhängig (durch Bytecode) Verteilt/Netzwerkfähig (Internet) Sicher (Sandbox) Multithreading-fähig (Parallelverarbeitung) 28

Grundlagen: Ausführbare Programme Der Quellcode beinhaltet Anweisungen, die noch nicht direkt durch ein Computersystem ausgeführt werden können. Für die Ausführung der Anweisungen muss der Quellcode erst in Maschinencode übersetzt werden. Es gibt zwei Möglichkeiten, Quellcode einer höherer Programmiersprachen in Maschinencode zu übersetzen: Interpreter: Nach dem Start des Interpreters wird jeweils eine Anweisung des Quellprogramms nach der anderen in Maschinenbefehle übersetzt, geprüft und sofort ausgeführt. Compiler: Übersetzt das Quellprogramm vollständig in Maschinencode, der zu einem beliebigen Zeitpunkt vom Betriebssystem geladen und ausgeführt werden kann. 29

Ausführen von Java Java kombiniert Compiler und Interpreter Zunächst wird die Quelldatei mit Hilfe des Java Compilers in Bytecode übersetzt. HelloWorld.java javac HelloWorld.class Quellcode Java Compiler Java Bytecode Wichtig: Die Bytecode-Datei beinhaltet exakt denselben Bytecode, egal von welchem System sie erzeugt wird (Plattformunabhängig!) 30

Java Bytecode Interpreter Der Bytecode kann noch nicht direkt ausgeführt werden. Dazu wird im zweiten Schritt ein Java Bytecode Interpreter eingesetzt. Jedes System hat seinen eigenen Java Bytecode Interpreter, die Java Virtual Machine (JVM) Betriebssystem Prozessorarchitektur 31

Java - Übersetzung javac ProgramName.java Java Quellcode ProgramName.java Java-Compiler javac java ProgramName Java Byte- Code ProgramName.class Java-Interpreter java JVM-NT JVM-Sol JVM-Net Windows NT Sun Solaris Netscape Betriebssystem/ Browser/ Machinensprache 32

Programmcode class HelloWorld { public static void main (String[] args) { System.out.println( Hello, world ); } } Quellcode Der Programmcode muss erst in die für den Computer verständliche Sprache übersetzt werden! 33

Java Applikationen vs. Applets vs. Java-Script Java-Applikationen: Anwendungen auf Betriebssystemebene, z.b. wird unter Windows gestartet und öffnet ein eigenes Fenster. Java-Applets: Java-Anwendungen, die in einem WWW-Browser ablaufen. Sind in HTML-Seiten eingebettet und werden automatisch über das Internet heruntergeladen; z.b. im Internet Explorer. Java-Script: Scriptsprache zum Einbetten von einfachen Programmen in HTML-Seiten. 34

Selbstkontrolle In welchen Phasen läut ein Software-Projekt ab? Welche Klassen von Programmiersprachen gibt es? Und zu welcher Klasse gehört Java? Was sind die Eigenschaften von Java? Erklären Sie die Schritte vom Java-Quellcode zum ausführbaren Java-Programm. Was ist der Unterschied zwischen Java- Applikationen und Java-Applets? 35