Zugriffsrechte und Packages

Ähnliche Dokumente
7. Pakete Grundlagen der Programmierung 1 (Java)

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Java Einführung Packages

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

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz

Programmieren in Java

Objekt-Orientierte Programmierung

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

Programmierkurs Java

Ein erstes Java-Programm

II.1.1. Erste Schritte - 1 -

Java - Programmierung - Objektorientierte Programmierung 1

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Innere Klassen in Java

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Java-Schulung Grundlagen

Propädeutikum zur Programmierung

Abschnitt 9: Schnittstellen: Interfaces

Java für C++ Programmierer

3 Objektorientierte Konzepte in Java

Java Einführung Abstrakte Klassen und Interfaces

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1

Einführung in die Programmierung Blockkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java

Assoziationen. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 05: Assoziationen und Pakete. Inhalt. Assoziationen.

4. Objektorientierte Programmierung

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

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

Java Schulung (Java 2 Java Development Kit 5 / 6)

Graphische Benutzungsoberflächen

3 Objektorientierte Konzepte in Java

Repetitorium Informatik (Java)

Einbindung der Tastatur

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Kapitel 19: Klassen und Unterklassen

Primitive Datentypen

Computeranwendung und Programmierung (CuP)

Java für Computerlinguisten

Java Einführung Methoden in Klassen

Javakurs 2013 Objektorientierung

Kapitel 2. Java: Der Einstieg. 2.1 Grundlegendes zu Java Historisches Eigenschaften von Java

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 07

Modularisierung. Modularisierung. 1 von 21

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Einführung in die Informatik II

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Themen. Web Service - Clients. Kommunikation zw. Web Services

Übersicht. Informatik 2 Teil 1 Objektorientiertes Programmieren und Grundlagen von Java

Programmieren in Java

Remote Method Invocation

Klausur vom 14. Juni Informatik 4

Musterlösungen zur Klausur Informatik 3

Kapitel 6. Vererbung

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

Kapitel 6. Vererbung

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

5.6 Vererbung. Vererbung

Sie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben.

Klassen und Unterklassen

Typumwandlungen bei Referenztypen

Klassen und Unterklassen

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

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

Kapitel 6. Vererbung

JDBC. Allgemeines ODBC. java.sql. Beispiele

Java: Vererbung. Teil 3: super()

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006

Ab jetzt: Java ohne Kara

Einführung in die. objektorientierte Programmierung

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

Beispiel: DB-Mock (1/7)

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Probeklausur: Programmierung WS04/05

Rekursion. Was heißt "rekursiv" Page 1. Eine Methode m() heißt rekursiv, wenn sie sich selbst aufruft. Beispiel: Berechnung der Fakultät (n!

Entwicklungsrichtlinien. 6. Mai 2015

Programmierkurs Java

Vererbung & Schnittstellen in C#

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Klassen in Java. Klassen

FHZ. Man unterscheidet ein- und mehrdimensionale Arrays. Bei einem mehrdimensionalen Array sind die Komponenten wiederum Arrays.

Java Programmierung auf der Konsole / unter Eclipse

von Anja Austermann Drag and Drop

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

1. Der Einstieg in Java

Applications Applets (eingeschränkte Rechte)

5. Tutorium zu Programmieren

Prinzipien Objektorientierter Programmierung

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

2.2 Prozesse in Java

Vorlesung Programmieren

Erreichbarkeit von Klassenelementen. Daten verstecken und kapseln

Java Beans. von Raoul Schneider

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse

Teil 1: Grundeigenschaften von Rechnern und Software

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes

Transkript:

Zugriffsrechte und Packages Allgemeine Informatik I Wintersemester 2013/14 Karsten Weihe Schnitt: Sascha Weiß Mit freundlicher Unterstützung des elc der TU Darmstadt

Komplexer Typ Klasse Interface

Standardbibliothek

Standardbibliothek java java.awt java.awt.color java.awt.font java.awt.geom java.lang java.lang.regex java.util javax org java.io

Standardbibliothek java.lang.string java.awt.graphics java.awt.color.color

Importieren import java.util.*; import java.awt.color.color; import java.awt.color.*;

Importieren import java.awt.graphics; Graphics graphic; // java.awt.graphics

Importieren import java.awt.*; Graphics graphic; Color color; // java.awt.graphics // java.awt.color.color

Importieren import java.awt.*; Graphics graphic; Color color; // java.awt.graphics // java.awt.color.color

Importieren import java.*; import java.lang.*; // Implizit importiert // Implizit importiert

Eigene Packages Am Anfang jeder Quelldatei, die zu meinpackage gehören soll, die Zeile: package meinpackage; Muss erste Zeile sein Nur eine package-zeile in jeder Quelldatei

Quelldatei in Package package meinpackage; class X {... } interface A {... }...

Quelldatei ohne Package Quelldatei ohne package-zeile? Ø Bildet für sich allein ein namenloses Package Ø Nur für kleine Spielereien sinnvoll Ø Alles Folgende gilt sinngemäß auch für Quelldateien ohne package-zeile

In jeder Quelldatei Eine public-klasse oder ein public- Interface Ø Außerhalb des Packages sichtbar Ø Klassenname = Dateiname Beliebig viele Hilfsklassen/-interfaces Ø Nicht außerhalb des Packages sichtbar

In jeder Quelldatei // Datei B.java: class A {... } public class B {... } class C {... }

Warum Packages? Aufeinander bezogene komplexe Typen bilden eine Gruppe Klassen / Interfaces sind durch diese Gruppierung leichter auffindbar Privilegierter Zugriff innerhalb des Packages Namenskonflikte kontrollierbar

Namenskonflikte Beispiel: X und Y exportiert von meinpackage1 X und Z exportiert von meinpackage2

Namenskonflikte import meinpackage1; import meinpackage2; Y y = new Y (); Z z = new Z (); X x = new X ();

Namenskonflikte import meinpackage1; import meinpackage2; meinpackage1.x x1 = new X (); meinpackage2.x x2 = new X ();

Namenskonflikte Zwei komplexe Typen mit demselben Namen: Im selben Package: geht gar nicht In unterschiedlichen Packages: mit Packagenamen vorneweg ok

Namenskonventionen Firmen und Institutionen: Der umgedrehte Domain-Name Unzulässige Zeichen è Underscore de.tu_darmstadt.informatik.algo.ai1

Zugriffsrecht: public public class X1 { public int a; public final double b = 3.14; public static Color c; public static final char D = A : }

Zugriffsrecht: public X1 z = new X1 (); z.a = 123; z.c = new Color ( Color.RED ); System.out.print ( z.a ); System.out.print ( z.b ); System.out.print ( z.c ); System.out.print ( z.d );

Zugriffsrecht: public X1 z = new X1 (); z.a = 123; z.c = new Color ( Color.RED ); System.out.print ( z.a ); System.out.print ( z.b ); System.out.print ( z.c ); System.out.print ( z.d );

Zugriffsrecht: public public class X2 { public int m1 () {... } public static double m2 () {... } public void m3 () {... } }

Zugriffsrecht: public X2 z = new X2 (); System.out.print ( z.m1() ); System.out.print ( z.m2() ); System.out.print ( X.m2() ); z.m3 ();

Zugriffsrecht: public X2 z = new X2 (); System.out.print ( z.m1() ); System.out.print ( z.m2() ); System.out.print ( X.m2() ); z.m3 ();

Zugriffsrecht: private public class X3 { private int a; private final double b = 3.14; private static Color c; private static final char D = A : }

Zugriffsrecht: private X3 z = new X3 (); z.a = 123; z.c = new Color ( Color.RED ); System.out.print ( z.a ); System.out.print ( z.b ); System.out.print ( z.c ); System.out.print ( z.d );

Zugriffsrecht: private X3 z = new X3 (); z.a = 123; z.c = new Color ( Color.RED ); System.out.print ( z.a ); System.out.print ( z.b ); System.out.print ( z.c ); System.out.print ( z.d );

Zugriffsrecht: private public class X4 { private int m1 () {... } private static double m2 () {... } private void m3 () {... } }

Zugriffsrecht: private X4 z = new X4 (); System.out.print ( z.m1() ); System.out.print ( z.m2() ); System.out.print ( X.m2() ); z.m3 ();

Zugriffsrecht: private X4 z = new X4 (); System.out.print ( z.m1() ); System.out.print ( z.m2() ); System.out.print ( X.m2() ); z.m3 ();

Zugriffsrecht: private class X5 { private int n; private void m1 () {... } public void m2 ( X5 a ) {... } }

Zugriffsrecht: private public void m2 ( X5 a ) { n = 1; m1 (); a.n = 2; a.m1 (); }

Zugriffsrecht: private public void m2 ( X5 a ) { n = 1; m1 (); a.n = 2; a.m1 (); }

Zugriffsrecht: protected public class X6 { public int n1; private int n2; protected int n3; public void m1 () {... } private void m2 () {... } protected void m3 () {... } }

Zugriffsrecht: protected public class Y { public void m4 () { X6 a = new X6 (); a.n1 = 1; a.n2 = 2; a.n3 = 3; } } // public // private // protected

Zugriffsrecht: protected public class Y { public void m5 () { X6 a = new X6 (); a.m1 (); a.m2 (); a.m3 (); } } // public // private // protected

Zugriffsrecht: protected public class Z extends X { public void m6 () { X6 a = new X6 (); a.n1 = 1; // public a.n2 = 2; // private a.n3 = 3; // protected!!! } }

Zugriffsrecht: protected public class Z extends X { public void m6 () { X6 a = new X6 (); a.m1 (); // public a.m2 (); // private a.m3 (); // protected!!! } }

Packages und Zugriffsrechte Sichtbarkeit von Attributen und Methoden: Mit public: überall sichtbar Mit private: nur innerhalb der Klasse Mit protected: im Package und in abgeleiteten Klassen Ohne alles: innerhalb des Packages

Packages und Zugriffsrechte In der Klasse Im ganzen Package In abgeleiteten Klassen Überall private --- protected public