Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Kritische Betrachtung
Dr. Andreas Winter Sommersemester 2007 Einführung in die Software-Entwicklung © Institut für Informatik Programmier-Richtlinien vgl. auch
Objektorientierte Programmierung
Objektorientierter Entwurf
Sequenzdiagramm.
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
AGXIS – Ein Konzept für eine generische Schnittstellenbeschreibung Dr.-Ing. Ulrich Hussels, RISA GmbH 07. Juni 2005 Workshop Umweltdatenbanken 2005.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Objektorientierter Entwurf
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Objektorientierte Programmierung
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Entwurfs- und Implementationsdiagramme
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
UML WS 09/10: Datenbanken vs MarkUp Dozent: Prof. Dr. Manfred Thaller
Grundlagen der Programmierung
Copyright 2007 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2007/08 Kapitel 10, Folie 1 2 Dr. Christian Herzog Technische.
Grundlagen der Programmierung
Grundlagen der Programmierung
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Informatik Zustandsorientiertes Modellieren und Programmieren 2.4 Datenkapselung 2.4 Datenkapselung Objekte können miteinander kommunizieren, indem.
2. Zustandsorientiertes Modellieren 2.4 Datenkapselung
Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.
Objektorientierte Programmierung
EPROG Tutorium #6 Philipp Effenberger
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 14. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Abstrakte Klassen und das Interface-Konzept
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Thema 4: Klassenbibliothek
Implementieren von Klassen
Objektorientierte Programmierung
 Präsentation transkript:

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische Universität München Wintersemester 2011/2012 Grundlagen der Programmierung Kapitel 11: Zugriffskontrolle

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 2 Inhalt dieses Kapitels Die genaue Kontrolle des Zugriffs auf –Klassen, –Schnittstellen und –Merkmale ist wichtige Voraussetzung für sichere Programmierung. Die in Java vorhandenen Möglichkeiten zur Zugriffskontrolle werden in diesem Kapitel kurz vorgestellt: –Pakete –die Modifikatoren private, protected und public und der Standard-Modifikator

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 3 Pakete In der Regel umfasst ein Java-Programm viele Klassen und Schnittstellen. Um Programme strukturierter zu gestalten, können Klassen und Schnittstellen in sog. Paketen (engl.: packages) zusammengefasst werden. Die Pakete in Java entsprechen damit den Bibliotheken anderer Programmiersprachen. –Auch die Java-Standardklassen werden in Paketen untergebracht. Ein Paket kann Klassen, Schnittstellen und Unterpakete enthalten. Letztere sind selbst Pakete. –Pakete sind also hierarchisch angeordnet. Bei Betriebssystemen wie Windows oder UNIX entspricht ein Paket einem Dateiverzeichnis mit allen in diesem Verzeichnis befindlichen Klassen- und Schnittstellendateien –Den Unterpaketen entsprechen dann Unterverzeichnisse.

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 4 Vollständig qualifizierte Bezeichner Ähnlich wie über absolute Pfadangaben in UNIX- oder Windows- Dateisystemen können Klassen und Schnittstellen über ihren vollständig qualifizierten Bezeichner direkt angesprochen werden. Ein vollständig qualifizierter Bezeichner besteht dabei aus dem Namen des Pakets bzw. der Unterpakete und dem Bezeichner der Klasse bzw. Schnittstelle selbst. Die einzelnen Bezeichner werden dabei jeweils durch einen Punkt getrennt. Beispiel: –Der vollständig qualifizierte Bezeichner der Klasse FileWriter aus dem Paket java.io lautet java.io.FileWriter –io ist ein Unterpaket von java –Das Paket java und seine Unterpakete enthalten die vordefinierten Klassen/Schnittstellen des Java-Systems (Standard-Klassen)

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 5 Das namenlose Paket Generell müssen alle Klassen und Schnittstellen in Java einem Paket zugeordnet sein. Der Zugriff auf sie ist dann nur noch über ihren vollständig qualifizierten Bezeichner möglich. Wird die Paketzugehörigkeit nicht explizit vereinbart (wie in allen bisherigen Beispielen im Rahmen der Vorlesung), so werden die Klassen und Schnittstellen einem namenlosen Paket zugeordnet, d.h. der einfache Bezeichner einer Komponente ist auch ihr vollständig qualifizierter Bezeichner. In der Regel ist das namenlose Paket auf das Verzeichnis begrenzt, in dem die jeweilige Klassen- bzw. Schnittstellendatei sich befindet. –Die Bezeichner von evtl. vorhandenen Unterpaketen entsprechen dann den jeweiligen Unterverzeichnisnamen.

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 6 Erstellung von Paketen Um eigene Pakete zu erstellen, wird zu Beginn des Programmtextes (vor der Deklaration von Klassen und Schnittstellen) der Paketname explizit angegeben: package ; Damit wird festgelegt, dass alle Klassen und Schnittstellen innerhalb der Programm-Datei zu dem Paket gehören. muss ein vollständig qualifizierter Bezeichner sein; –bei der Deklaration eines Unterpakets müssen auch die Namen aller Oberpakete (jeweils durch Punkte getrennt) angegeben werden. Die Klassen-Dateien (mit Endung.class) müssen sich dann in entsprechend bezeichneten Verzeichnissen und Unterverzeichnissen befinden.

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 7 Die import -Deklaration Im allgemeinen muss eine Klasse oder Schnittstelle mit ihrem vollständig qualifizierten Namen angegeben werden. Da solche Bezeichner oft recht lang werden können, kann man import - Deklarationen einsetzen. Dadurch können die Bezeichner auch ohne Angabe ihres Paketes verwendet werden. – import. ; – import.*; Der angegebene Klassenname kann in seiner Kurzform verwendet werden, solange kein Namenskonflikt auftritt. Alle Klassen des angegebenen Pakets können mit ihrer Kurzbezeichnung verwendet werden. Die Klassen und Schnittstellen des Pakets java.lang sind immer implizit importiert! Eine import -Deklaration kann unterbleiben.

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 8 Zugriffsbeschränkungen durch Modifikatoren Java bietet zur Zugriffsbeschränkung auf Klassen und Merkmale verschieden Modifikatoren an. Bisher haben wir nur Modifikatoren für Merkmale verwendet und zwar public, private und protected. Es gibt zusätzlich noch den Standard-Modifikator, der immer dann als gesetzt gilt, wenn kein anderer Modifikator angegeben ist. Zur exakten Definition der Modifikatoren wird der Begriff des Pakets benötigt. –Deshalb werden wir sie erst jetzt nachliefern.

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 9 Zugriffskontrolle für Klassen Für Klassen und Schnittstellen kann nur public oder der Standard-Modifikator (d.h. kein Modifikator) angegeben werden. Falls eine Klasse oder Schnittstelle mit dem Modifikator public (vor dem Schlüsselwort class bzw. interface ) versehen ist, dann kann auf sie von jeder Stelle des Programms zugegriffen werden. Beim Standard-Modifikator können Zugriffe nur innerhalb des Paketes erfolgen, zu dem die Klasse bzw. Schnittstelle gehört.

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 10 Zugriffskontrolle für Merkmale (Attribute, Konstruktoren, Operationen) Der Modifikator public wird für uneingeschränkte Zugriffsrechte verwendet. –Auch Zugriffe aus anderen Paketen heraus sind ohne Einschränkung möglich. Beim Modifikator protected sind Zugriffe auf die Merkmale nur noch von innerhalb desselben Pakets möglich. –Die einzige Ausnahme sind Unterklassen der Klasse, zu der das Merkmal gehört. –Diese können auf das Merkmal zugreifen, auch wenn sie selbst einem anderen Paket angehören.

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 11 Zugriffskontrolle für Merkmale (contd) Wird einem Merkmal keiner der Modifikatoren public, protected oder private vorangestellt, so spricht man von Standard-Zugriff oder auch der Paket-Sichtbarkeit. –In diesem Fall ist der Zugriff auf das Merkmal erlaubt, sofern er innerhalb desselben Pakets stattfindet. Durch private wird die schärfste Variante der Zugriffskontrolle gekennzeichnet. –Merkmale mit diesem Modifikator sind nur innerhalb der Klasse verwendbar, in der sie deklariert werden. –Diese Merkmale bleiben auch für Unterklassen unsichtbar. Deshalb haben wir in Kapitel 8 das Merkmal protected eingeführt, damit aber nicht nur den Zugriff von allen Unterklassen sondern von allen Klassen desselben Pakets erlaubt!

Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 12 Das wars für dieses Semester! Wir wünschen Ihnen – ein gesegnetes Weihnachtsfest und friedliche, ruhige Ferien – und für das Neue Jahr 2012 viel Glück!