CS1005 Objektorientierte Programmierung

Ähnliche Dokumente
CS1005 Objektorientierte Programmierung

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Fachbereich Medienproduktion

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung

Informatik Computer-Hardware

Prinzipieller Aufbau und Funktionsweise eines Prozessors

ZENTRALEINHEITEN GRUPPE

INFORMATIK Oberstufe. Funktionsweise eines Rechners

Informatik 12 Kapitel 3 - Funktionsweise eines Rechners

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 37

Mikrocomputertechnik

Philipp Grasl PROZESSOREN

Vorlesung Informatik II

C. BABBAGE ( ): Programmgesteuerter (mechanischer) Rechner

Tutorium Rechnerorganisation

Im Original veränderbare Word-Dateien

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CPU Speicher I/O. Abbildung 11.1: Kommunikation über Busse

1 EINFÜHRUNG PROGRAMMIERSPRACHEN

II.1.1. Erste Schritte - 1 -

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 16/17

Programme erstellen in Java

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Von-Neumann-Architektur

Microcomputertechnik

Übung 1 - Betriebssysteme I

1. Übung - Einführung/Rechnerarchitektur

Teil VIII Von Neumann Rechner 1

Assembler und Hochsprachen

Praktische Informatik 1

Mikroprozessortechnik Grundlagen 1

Lösung von Übungsblatt 3

Einführung in die Programmierung mit Java

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

L3. Datenmanipulation

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

Rechner Architektur. Martin Gülck


Motivation und Überblick

Betriebssysteme Vorstellung

3. Rechnerarchitektur

2 Eine einfache Programmiersprache

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 Tel: 07531/ Oliver Haase Hochschule Konstanz 1

Rechnergrundlagen. Vom Rechenwerk zum Universalrechner

2.1 Rechnersichten 2.2 Rechnerorganisation: Aufbau und Funktionsweise

Vorlesung 3: Verschiedenes

Java Einführung Programmcode

Eclipse Tutorial.doc

4 Der Von-Neumann-Rechner als Grundkonzept für Rechnerstrukturen

Programmiersprachen und Übersetzer

RO-Tutorien 3 / 6 / 12

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Kapitel 1. Programmierkurs. 1.2 Allgemeiner Aufbau des Computers. 1.1 Hallo, Computer...?

A ProgrAmmer s Guide to KIM Programming

Vorlesung Rechnerarchitektur. Einführung

2 Eine einfache Programmiersprache

Ein- Ausgabeeinheiten

Grundlagen der Informatik Übungen 1.Termin

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

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

II.1.1. Erste Schritte - 1 -

Grundlagen der Informatik für Ingenieure I

Aufbau und Funktionsweise eines Computers

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Ein kleines Computer-Lexikon

Algorithmen versus Programmiersprachen

Wie rechnet ein Rechner?

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Informatik I - Einstiegskurs

Einführung in die Objektorientierte Programmierung. Thomas Letschert

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Java Programmierung auf der Konsole / unter Eclipse

Einführung zu den Übungen aus Softwareentwicklung 1

EINFÜHRUNG IN LINUX DR. MATTHIAS M. HÖLZL

Einführung in Java. Ausgewählte Quellen zu Java

Grundlagen der Informatik

Grundlegendes zum PC

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

Kapitel 1: Einführung

Rechnerstrukturen 1: Der Sehr Einfache Computer

Leseprobe. Norbert Heiderich, Wolfgang Meyer. Technische Probleme lösen mit C/C++ Von der Analyse bis zur Dokumentation ISBN:

Kurzanleitung zur Verwendung der Java-IDE NetBeans (1)

Grundlagen der Programmierung UE

Aufbau eines Taschenrechners

Die Mikroprogrammebene eines Rechners

1 Aufgabe: Computer-Aufbau

CS1005 Objektorientierte Programmierung

Vorkurs Informatik WiSe 15/16

Grundlagen der Programmierung UE

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Vorsemesterkurs Informatik

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

- dynamisches Laden -

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe

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

Assembler - Einleitung

Transkript:

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Programme Erstellen und Ausführen Seite 1 Th Letschert

Programme Erstellen Lebenszyklus der Software Software werden in mehreren voneinander abgegrenzte Phasen erstellt. Man erhält einen Softwarelebenszyklus, einen so genannten Software Life Cycle. Es gibt keinen allgemein akzeptierten Ablauf des Softwarelebenszyklus Einigkeit herrscht nur über die prinzipiellen Tätigkeitsklassen Analyse: Was ist überhaupt zu tun Entwurf: Wie wollen wir es machen Implementierung: Programm(e) schreiben Test: Prüfen Wartung: Verbesserungen, WeiterEntwicklungen Das klassische Wasserfall-Modell: Zeitliche Abfolge der Phasen das Spiral-Modell: In einander verschränkte Phasen Seite 2

Programme Erstellen Phasen in der SW-Entwicklung Wie wird der Text (Quellcode) der Programme erstellt und gepflegt Problemanalyse (Anforderungs- / Systemanalyse) Analyse des Problemfeldes und der Aufgabenstellung Ergebnis: Anforderungsbeschreibung (= Pflichtenheft) Systementwurf Aufteilung der Aufgabe/Lösung in so genannte Module aufgeteilt Ergebnis: Systemspezifikation Programmentwurf Module werden zu Programmstrukturen ausgearbeitet Ergebnis: mehrere Spezifikationen Implementierung und Test Module werden programmiert und getestet (verifiziert) Ergebnis: aus getesteten Modulen zusammengesetztes Programm Betrieb und Wartung Pflege der Software: Fehlerbeseitigung, Erweiterungen und Änderungen Seite 3

Programme Übersetzen und Ausführen Programm-Ausführung Wie wird der Text (Quellcode) der Programme zu Aktionen eines Computers Programm Festlegung von Aktionen in einer exakt festgelegten Notation Interpreter liest das Programm und befolgt dessen Anweisungen Varianten Hardware (CPU, Prozessor) Programm wird durch Hardware ausgeführt die Basis aller Programmausführung Software (Programm) Programmausführung durch ein Programm Seite 4

Programmausführung durch Hardware Rechner Aufbau und Arbeitsweise externer Speicher Rechner Prinzipieller Aufbau Externer Speicher (Festplatte): Enthält Daten und Programme Arbeitsspeicher / RAM: Enthält Daten und Programme mit denen Prozessor: führt Anweisungen (Befehle) aus Prozessor (CPU) Lädt Befehle (Sequenzen von Bits) aus Arbeitsspeicher in Register Lädt Operanden (Sequenzen von Bits) in Register Führt Befehle aus: ändert Bit-Sequenzen in Registern Speichert Werte in Registern im Hauptspeicher Arbeitsspeicher CPU Hauptspeicher CPU 3 Befehl 1 Daten Daten 2 Befehl Befehl Befehl Daten Dasten Daten 4...... Seite 5 1. Befehl laden 2. Daten laden 3. Befehl ausführen 4. Daten speichern

Programmausführung durch Hardware Steuerwerk ALU Register Prozessor Aufbau ALU (Arithmetic Logical Unit) Rechenwerk für mathematische / logische Operationen (Arbeits-) Register Speicherplätze für Daten innerhalb des Prozessors. Die ALU rechnet mit den Werten, die sich in den (Arbeits-) Registern befinden. Steuerwerk Kontrolle der Ausführung, nutzt dabei spezielle Register Befehlszählerregister Befehlsregister Bus / Datenleitung Busse (= Leitungen ) verbinden die CPU mit anderen Komponenten Datenbus: Austausch von Daten mit dem Arbeitsspeicher (RAM) Adressbus: Übertragen der Speicheradressen. Steuerbus: Ansteuerung der Peripherie-Anschlüsse Seite 6 Bus RAM E/A-System

Programmausführung durch Hardware Prozessor-Register Prozessor-interne Speicherplätze für binäres Datum bestimmter Länge (z. B. 32-Bit) Arbeitsregister werden vom Speicher geladen mit arithm. / logischen Operationen manipuliert in den Speicher geschrieben Steuerregister Befehlszähler: Adresse des nächsten Befehls Befehlsregister: Befehl der gerade ausgeführt wird Registergröße (z.b. 32, 64 Bit) beeinflusst Leistungsfähigkeit des Prozessors Pro Befehl manipulierbare Datenmenge Größe des adressierbaren Speichers Seite 7

Programmausführung durch Hardware Funktionsweise Prozessor 1. Das Befehlszählerregister des Steuerwerks enthält die Adresse des nächsten Maschinenbefehls. Die Adresse des Befehls wird über den Adressbus an den Arbeitsspeicher übermittelt. 2. Der Befehl wird aus dem Arbeitsspeicher über den Datenbus in das Befehlsregister geladen. Mittels Dekodierlogik wird der Befehl analysiert und die Ausführung angestoßen. 3. Der Befehl wird ausgeführt; abhängig vom jeweiligen Befehl wird dabei zusätzlich das Lesen von Daten aus dem Arbeitsspeicher, die Ansteuerung von Peripherieschnittstellen, das Rechnen in der ALU oder die Durchführung eines Sprungs im Programm erforderlich. Der Status der jeweiligen Operation wird im Statusregister (Flagregister) angezeigt. 4. Falls ein Sprung stattfand, wird das Befehlszählerregister auf die entsprechende neue Adresse gesetzt, ansonsten wird das Befehlszählerregister um 1 erhöht. 5. Der Prozessor fährt wieder mit dem 1. Schritt fort. Seite 8 Befehl holen Operand holen Befehl dekodieren Operation ausführen Befehlszähler ändern

Programmausführung durch Hardware Arbeitsspeicher / RAM Enthält alle Daten und Befehle eines Programms in Ausführung Direkter Zugriff auf Byte-Adressen CPU greift direkt auf einzelne Speicherstellen zu Byte-, Wort-/ Doppelwort lesen / schreiben (Von Platte kann nur in großen Blöcken gelesen werden) RAM Der Arbeitsspeicher besteht im Wesentlichen aus Speicherbausteinen, die man als RAM (Random Access Memory = Speicher mit wahlfreiem Zugriff ) bezeichnet. Bei allen RAM-Bausteinen gilt, dass ihr Inhalt flüchtig ist, d.h. dass sie nur so lange den gespeicherten Wert behalten, wie sie mit Strom versorgt werden. Nach Abschalten des Rechners sind Daten im Arbeitsspeicher verloren. Zwei Arten von RAM: DRAM (Dynamic RAM) langsam, kostengünstig SRAM (Static RAM) schnell, teurer (meist für Register und Cache-Speicher) Seite 9

Programmausführung durch Hardware Peripherie alle Geräte, die an den Rechner angeschlossen sind. Für den Prozessor i.a. nicht direkt zugreifbar. Eingabe Maus, Tastatur, Scanner, Ausgabe Drucker, Graphikkarte / Bildschirm, Ein- und Ausgabegeräte: Netzkarte, Massespeicher Gerät, das zur Speicherung von Daten dient Magnetische Speicher Festplatten, floppy-disc Optische Speicher CD, DVD Halbleiter-Speicher USB-Stick SSD (solid state drive) Platte Festplatte in Halbleiterbausteinen Seite 10

Programme Übersetzen und Ausführen Maschinencode / Assemblercode Maschinenbefehle Bit-Folgen mit festgelegter Bedeutung (für Menschen unles- / unschreibbar) Spezifisch für jeden Prozessortyp Assembler (symbolischer Maschinencode) Für Menschen les- / schreibbare Darstellung der Maschinen-Befehle. Urform der Programmiersprachen. Nutzung: In Speziellen Situationen / als Zwischenstadium Beispiel (Intel 80x86) 100000111100001000001111 Maschinenbefehl : addiere 0F zu Register EDX 83C20F Maschinenbefehl in Hex add edx,0fh entsprechender Assemblerbefehl add edx,0fh Assembler Seite 11 100000111100001000001111

Programme Übersetzen und Ausführen Höhere Programmiersprache Strukturierte Anweisungen, Datentypen,... Bedingungen, Schleifen, Funktionen, Datentypen, Ausdrücke... haben keine direkte Entsprechung in Maschinencode Werden durch Compiler in Sprünge und einfache Operationen umgesetzt Compiler Übersetzt höhere Programmiersprache in Assemblercode oder direkt in Maschinencode Beispiel a = a+1 Anweisung in höherer Programmiersprache load edx,0fh add edx,0x01 store edx,0fh Maschinenbefehl in Assembler-Notation a = a+1 Quell-Programm Compiler add edx,0fh Assembler Assembler-Programm 100000111100001000001111 Maschinenrogramm Seite 12

Programme Übersetzen und Ausführen Compilierte Höhere Programmiersprache Ausführung Eingeben: Der Programmtext wird mit Hilfe eines Editor-Programms vom Entwickler eingetippt und in einer Datei abgespeichert Übersetzen: Der Compiler (ein Programm) übersetzt den Text in Maschinencode und speichert ihn in einer Datei Binden: Der Binder (engl. Linker, ein Programm) kombiniert (verbindet) das Maschinenprogramm mit dem Maschinencode aus Bibliotheken für Standardkomponenten zu einem ausführbaren Programm (eine Datei). Laden: Das Betriebssystem lädt das Maschinenprogramm aus der Datei (Festplatte) in den Hauptspeicher. Starten: Die erste Adresse des Programms wird vom Betriebssystem in das Programmregister (= Befehlszähler) der CPU geladen Ausführen: Die CPU lädt einen Befehl des Maschinen-Programms nach dem anderen und führt ihn aus. Seite 13

Programme Übersetzen und Ausführen Interpreter (Interpretierer) Der Programmtext wird nicht in ein Maschinenprogramm übersetzt damit dann die CPU das Maschinenprogramm ausführen (interpretieren) kann sondern: Der Programmtext wird direkt (ohne Übersetzung) von einem anderen Programm ausgeführt dem Interpreter (-Programm) a = a+1 Quell-Programm 100000111100001000001111 Interpreter-Programm (Maschinencode) Seite 14 Daten Befehle

Programme Übersetzen und Ausführen Interpreter ist ein Programm, das in Maschinencode übersetzt wurde (oder selbst interpretiert wird) a = a+1 Quell-Programm Daten AnwendungsProgrammierer 100000111100001000001111 Befehle Interpreter-Programm (Maschinencode) Assembler a = a+1 Quell-Programm Compiler add edx,0fh Assembler-Programm SystemProgrammierer Seite 15 Compiler und Assembler sind natürlich auch Maschinenprogramme, die...

Programme Übersetzen und Ausführen Interpretierte Höhere Programmiersprache Ausführung Eingeben: Der Programmtext wird mit Hilfe eines Editor-Programms vom Entwickler eingetippt und in einer Datei abgespeichert Ausführen: Die CPU lädt einen Befehl des Interpreter-Programms nach dem anderen und führt ihn aus. Dabei werden die Anweisungen des Quellprogramm als Daten gelesen und ausgeführt. Seite 16

Programme Übersetzen und Ausführen Virtuelle Maschine Maschine die sich aus der realen Maschine (CPU) plus Interpreter-Programm ergibt Das Interpreter-Programm allein wird oft als virtuelle Maschine bezeichnet. 100000111100001000001111 Interpreter-Programm (Maschinencode) a = a+1 Quell-Programm Ausführung Programmierer virtuelle Maschine Seite 17

Programme Übersetzen und Ausführen Virtualisierung Ein Grundprinzip der Informatik Eingabedaten Hardware + Software Software Programm spezielle Maschine virtuelle Maschine Ausgabedaten Seite 18

Programme Übersetzen und Ausführen Virtualisierung Ein Grundprinzip der Informatik wird mehrfach geschachtelt angewendet Eingabedaten Hardware + Software Programm: Interpreter in Maschinensprache Software spezielle Maschine: virtueller (gedachter) Computer der eine höhere Sprache versteht + Software Programm virtuelle Maschine Software spezielle Maschine virtuelle Maschine Ausgabedaten Seite 19

Java-Programme Übersetzen und Ausführen Übersetzen und Ausführen Java kombiniert Compiler und Interpreter Java-code Schritt 1: Übersetzen Das Quell-Programm (Java) wird übersetzt Aber nicht in Machinecode Sondern in Bytecode = Code für die virtuelle Maschine JVM Schritt 2: Interpertieren Ein Interpreter-Programm (Die JVM) wird von der realen Maschine ausgeführt und führt dabei selbst die übersetzten Anweisungen des Quellpropgramms aus Compiler virtuelle Maschine Bytecode JVM Betriebssystem CPU / HW reale Maschine Bildquelle: http://docs.oracle.com/javase/tutorial/getstarted/intro/definition.html Seite 20

Java-Programme Übersetzen und Ausführen Java : Compilieren + Interpretieren Vorteil: Keine Anpassung des Compilers notwendig Übersetzte Programme überall lauffähig Nachteil: Ausführung langsamer Direkte Ausführung von Maschinencode ist schneller als die indirekte Ausführung mit einem Interpreter-Programm Motivation für Compilation + Interpretation Compiliert: Compiler / Bibliotheken müssen an Plattform angepasst werden, Nur Quellcode kann transferiert werden Compiliert + Interpretiert: Ablaufumgebung (JVM) muss an Plattform angepasst werden, Bytecode kann transferiert werden Java-Programme können während ihres Laufs von beliebigen Quellen (Internet!) weitere Programmteile ( Klassen ) laden und sofort ausführen ohne selbst übersetzen zu müssen (zu langsam) und ohne dass die Quelle eine übersetzte Version bereithalten muss (geht nicht, da ladende Maschine unbekannt). Bildquelle: http://docs.oracle.com/javase/tutorial/getstarted/intro/definition.html Seite 21

Java-Programme im Dateisystem Datei Java-Code in Quelltext-Datei Dateiname: KlassenName.java Datei kann mehrere Klassen enthalten, davon darf nur eine public sein Verzeichnis enthält die Bestandteile eines Pakets: Klassen des Pakets: Java- / Class-Dateien Sub-Pakete Paket Klasse1 Sub-Paket Klasse2 logische Struktur Verzeichnis ~ Paket Paket-Zugehörigkeit einer Klasse durch Package-Deklaration: package <Paket-Name>; in der Datei eines Pakets (Relation Paket/Sub-Paket): Hierarchische Paketnamen: <Paket>.<Sub-Paket>.<Sub-Sub-Paket> Programm keine direkte Repräsentation ergibt sich aus den geladenen Klassen Seite 22 Klasse1.java Java-Datei Klasse1.class Class-Datei Unter-Verz. ~ Sub-Paket Klasse2.java Java-Datei Klasse2.class Class-Datei Verzeichnis-Struktur

Java-Programme Übersetzen und Ausführen Programm erstellen Verzeichnis erstellen: mypackage Datei erstellen (beliebiger Text-Editor): MyClass und in diesem Verzeichnis in der Datei MyClass.java speichern Programm übersetzen Kommando z.b.: javac mypackage/myclass.java erzeugt die Datei mypackage/myclass.class Programm ausführen Kommando z.b.: java mypackage.myclass Editor Editor package mypackage; package mypackage; public final class MyClass { public final { public staticclass void MyClass main(final String[] args) { public static void main(final String[] args) { System.out.println("Hallo Java"); System.out.println("Hallo Java"); } } } } Hallo Java Hallo Java Seite 23 Compiler Compiler (javac) (javac) JVM JVM (java) (java)

Java-Programme Übersetzen und Ausführen Pfad und Klassenpfad Pfad, engl. Path ein Ausdruck der dem System hilft Programme zu finden C:\Programme\Java\jdk1.6.0_01\bin könnte der Pfad zu den Programmen javac und java sein. Klassenpfad, engl. Classpath ein Ausdruck der java (also der JVM) hilft die Klassendateien zu finden als Kommando- (Programm-) Argument: java -cp /pfad/zum/verzeichnis mypackage.myclass z.b.: java -cp /home/thomas/classes mypackage.myclass default: aktuelles Verzeichnis der Klassenpfad endet immer vor den Paket-Verzeichnissen bla Klassenpfad blubber classes mypackage MyClass. class Seite 24 siehe auch: http://docs.oracle.com/javase/tutorial/getstarted/index.html

Java-Programme Übersetzen und Ausführen Jar-Archiv Sammlung von Java-Dateien Class-Dateien und eventuell Quell-Dateien (zip-codierte Archiv-Datei) Verwendung: Transport und Installation von java-code ~ ausführbare Datei oder Bibliothek Erzeugung mit Kommando (Programm) jar. Beispiel: jar -cvf myjararchive.jar mypackage erzeugt ein Archiv des Verzeichnisses mypackage Nutzung als Klassen-Bibliothek, Beispiel: jar -cvf myjararchive.jar mypackage java -cp myjararchive.jar mypackage.myclass als ausführbare Datei, Beispiel: jar -cvfe myjararchive.jar mypackage.myclass mypackage java -jar myjararchive.jar Manifestdatei: enthält Infos zum Archiv. z.b.: Angabe Haupt-Klasse Seite 25

Java-Programme Übersetzen und Ausführen Getrennte Verzeichnisse für Quell- und Binärdateien javac -d <Zielverzeichnis> <Quelldatei> z.b.: javac -d bin src/hallo/hallowelt.java Jar-Datei erzeugen: Archiv Klasse Verzeichnis eventuell mehrere Verzeichnisse cd bin jar -cvfe HalloWelt.jar hallo.hallowelt hallo Jar-Datei aus einem anderen als dem aktuellen Verzeichnis bin heraus erstellen jar -cvfe HalloWelt.jar hallo.hallowelt -C bin hallo Jar-Datei ausführen: Gibt Verzeichnis des nachfolgenden Kommando-Arguments an java -jar HalloWelt.jar HalloWeltProject + src + hallo + HalloWelt.java + bin + hallo + HalloWelt.class Seite 26

Java-Programme Übersetzen und Ausführen Ausführbare Jar-Datei mit Eclipse erstellen Rechts-Klick auf auf das zu exportierende Projekt: Export Runnable JAR file auszuführende Klasse angeben (Launch configuratution) Zielverzeichnis und Datei angeben Finish Ausführbare Java-Datei ist erstellt und kann (z.b. mit Doppelklick) ausgeführt werden. Zu Jar-Dateien siehe auch: http://docs.oracle.com/javase/tutorial/deployment/jar/ Seite 27