Objektorientierte Programmierung - schulnote.de 
Akzeptieren

Unsere Webseite nutzt Cookies. Wenn Sie auf dieser Webseite bleiben, nehmen wir an, dass Sie damit einverstanden sind. Sie können unsere Cookies löschen. Wie das geht, erfahren Sie in unserer Datenschutzerklärung. Mehr erfahren



Impressum | Datenschutzerklärung Startseite




 Apache HTTP Server Test Page powered by CentOS

Apache 2 Test Page
powered by CentOS

This page is used to test the proper operation of the Apache HTTP server after it has been installed. If you can read this page it means that the Apache HTTP server installed at this site is working properly.


If you are a member of the general public:

The fact that you are seeing this page indicates that the website you just visited is either experiencing problems or is undergoing routine maintenance.

If you would like to let the administrators of this website know that you've seen this page instead of the page you expected, you should send them e-mail. In general, mail sent to the name "webmaster" and directed to the website's domain should reach the appropriate person.

For example, if you experienced problems while visiting www.example.com, you should send e-mail to "webmaster@example.com".

If you are the website administrator:

You may now add content to the directory /var/www/html/. Note that until you do so, people visiting your website will see this page and not your content. To prevent this page from ever being used, follow the instructions in the file /etc/httpd/conf.d/welcome.conf.

You are free to use the images below on Apache and CentOS Linux powered HTTP servers. Thanks for using Apache and CentOS!

[ Powered by Apache ] [ Powered by CentOS Linux ]

About CentOS:

The Community ENTerprise Operating System (CentOS) Linux is a community-supported enterprise distribution derived from sources freely provided to the public by Red Hat. As such, CentOS Linux aims to be functionally compatible with Red Hat Enterprise Linux. The CentOS Project is the organization that builds CentOS. We mainly change packages to remove upstream vendor branding and artwork.

For information on CentOS please visit the CentOS website.

Note:

CentOS is an Operating System and it is used to power this website; however, the webserver is owned by the domain owner and not the CentOS Project. If you have issues with the content of this site, contact the owner of the domain, not the CentOS Project.

Unless this server is on the centos.org domain, the CentOS Project doesn't have anything to do with the content on this webserver or any e-mails that directed you to this site.

For example, if this website is www.example.com, you would find the owner of the example.com domain at the following WHOIS server:

http://www.internic.net/whois.html





Titel:

Objektorientierte Programmierung


  Note: 2   Klasse: 11









Arbeit: OOP - objektorientierte Programmierung

OOP ist vor allem bei großen Programmen sehr hilfreich, da ein Objekt sehr leicht eingebungen oder verändert werden kann. Dies verbilligt vor allem große Softwareprojekte enorm, da der Wartungsaufwand erheblich reduziert werden kann.

Was ist ein Objekt überhaupt? Ein Objekt hat Eigenschaften, die dieses Objekt einzigartig machen.

D.h. Ein Computer beispielsweise wäre ein Objekt, er hat einen Prozessortyp, einen Bustyp, eine Gehäuseart,... alle diese Attribute machen ihn (das Objekt) einzigartig.

Es stellt sich die Frage, wie die Daten zu speichern sind. Die beste Lösung ist eine Struktur, in der alle Daten, das Objekt betreffend, gespeichert werden. (1.Schritt in Richtung OOP).

Statisches Binden (static binding)

Welches Unterprogramm wo aufgerufen wird, entscheidet der Compiler.
if (...) roiser(...)


Calling Overhead

Unterprogrammaufruf benötigt Zeit (bei wenig Zeilen ist ein UP unnötig)
4.3 Inline Definition
4.3.1 Macro Expansion

Code wird an die Stelle, wo er benötigt wird, kopiert ® kein Stack, kein JMP, Zeitgewinn, verbraucht mehr Speicherplatz

Strukturen (structures)

Eine structure (in Pascal: records) entspricht einer Tabellendefinition. Das heißt, um die Übersichtlichkeit zu bewahren, dass zusammengehörige Variable ("Attribute") zu einer Struktur zusammengefasst werden. Dadurch spart man sich unnötige Variablendeklarationen.

typedef struct schueler {

int alter;

int edvnote;

char name [..];

float groesse;

};

int a, b;
schueler huber, mayer, x;
a=7;

huber.alter=17;
huber.edvnote=3;
huber.name="Huber"
x=huber;

boolean ist_neg (schueler s) schueler der_groessere (schueler a, schueler b)

{ {

if (s.edvnote=5) return (TRUE); if (a.groesse>b.groesse) return (a);

else return (FALSE); else return (b);

} }

Vererbung (inheritance)

= eine Kurzschrift, um dem Programmierer die Schreibarbeit abzunehmen. Um ähnliche Objekte nicht extra definieren zu müssen, können Attribute und Methoden, zu den vorhandenen, mitvererbt werden.

4.5.1 Mehrfachvererbung (multiple inheritance)

® eine structure enthält mehrere structures (enthält nicht jede moderne Programmiersprache)
4.5.2 Selektivvererbung (selective inheritance)

® Übernahme von gewissen Variablen (in keiner wichtigen Sprache vorhanden)

4.6 Generizität (genericity)

= änderbarer Datentyp in einer structure (für flexible Gestaltung; z.B. bei ADA)



struct usaschueler { struct schueler (T, R) { struct kanschueler {

schueler (char, int) ¬ alter (R); ® schueler (float, float)

}; ... };

edvnote (T);

};

Hier handelt es sich für den Programmierer auch nur um eine Kurzschrift (beim Maschinencode ändert sich nichts).

Klasse (class)

= structure mit Unterprogramm(e)
schueler y;

if y.ist_neg Û if ist_neg(y)



Der Vorteil der linken Variante ist der, dass bei einer Änderung von einem Unterprogramm zu einer Variablen (statt: ist_neg() {...} ® int ist_neg;) keine Komplikationen auftreten.

Methode (method)

= ein Unterprogramm in einer structure (Smalltalk: MESSAGE)


Ich rufe mit dieser Struktur das Unterprogramm auf. Ich rufe mit dieser Klasse die Methode auf.

4.8.1 Gegenüberstellung von OOP und alter Methode




class schueler { schueler stz;

name : string;

groesse : float; stz.name = "Stanzl";

pnote : integer; stz.groesse = 1.75;

ist_neg : boolean; stz.pnote = 2;

{ if ( stz.ist_neg = TRUE)

... this.pnote=5 ... MsgBox ( ... )

}

ist_riese : boolean;

{

if this.groesse > 2.2

then return (TRUE)

else return (FALSE)

}

};





STATIC TYPE = Typ, mit dem die Variable deklariert wurde

DYNAMIC TYPE = Typ, den die Variable tatsächlich hat



Diese Compiler nennt man:



STRONGLY TYPED (streng getypt)

1. keine Zuweisung an Kinder

2. ob die Methode zulässig ist, entscheidet das static type



WEAKLY TYPED (Smalltalk)



s := k hat den statischen Typ "schueler", aber nach der Zuweisung auch den dynamischen Typ "kaschueler". Von einem strongly typed Compiler werden aber nur die Zuweisungen (s:=k) akzeptiert, nicht die Ausführung der (nur bei dynamischen Typ) vorhandenen Methoden.



if ( InputBox () = 'YES' ) s:=k;

else s:=s2;

.

.

.

if ( s.ist_stenogenie ) ...





Aufgrund der Benutzeraktivität ist der Compiler nie in der Lage, den dynamischen Typ im vorhinein zu bestimmen ® Verlaß auf den Dispatcher

Dynamisches Binden (dynamic binding)

Der Compiler kommt zu einem Unterprogrammaufruf und weiß nicht ob er es ausführen soll und läßt während des Programmlaufes die Wahl einem kleinen Programm (dem DISPATCHER), das sich den TAG der Variablen anschaut und das jeweilige Unterprogramm auswählt.

auch late binding (z.B. bei C++, nicht bei Pascal)


EARLY BINDING
LATE BINDING
DYNAMIC BINDING

Polymorphie (Polymorphe Arrays)



Da bei Objekte Pointer benutzt werden, können verschiedenste Objekte in einem Array gespeichert werden. Auf den ersten Blick sieht es so aus, als würden verschiedenste Objekte in einem Feld gespeichert werden können; in Wirklichkeit wird jedoch jeweils nur ein Pointer auf ein Objekt gespeichert und dadurch wird die Polymorphie (Vielschichtig-/-gesichtigkeit) ermöglicht.


PRODUZENTENSEITE
KONSUMENTENSEITE

Aufgeschobene Klasse (deferred class)

· aufgeschobene Klassen sind ein Analyse-Tool

· OOP ist sein eigenes Analyse-Tool



Wenn die Kind-Klasse Rechteck keine flaeche-Methode enthält, hat der Dispatcher ein erhebliches Problem. Deshalb ist es besser, in der Vater-Klasse die flaeche-Methode zu definieren und dort DEFERRED (= aufgeschoben) anzugeben.



In den Kinder-Klassen werden die Flächenmethoden verlangt (wäre selektive Vererbung), wobei in der Vater-Klasse steht, was Figuren können sollen, aber nicht wie!

Bsp: Solitaire

Abstrakter Datentyp (abstract data type)

= andere Bezeichnung für deferred class; es ist eine massiv aufgeschobene Klasse

Axiome

sind Sachverhalte die beschreiben, wie Methoden zusammenhängen

Der Stapel bleibt nach den Aktionen gleich.


Datenkapselung (data encapsulation)



Im Prinzip legt man eine Kapsel an, die kleine Löcher hat, durch die man auf die Daten über einen Umweg (d.h. nicht direkt) zugreifen kann.

Klassenfindung



Objekt / kein Objekt gibt es Methoden die man darauf anwenden kann?



MIXIN-Klasse

nur definiert um andere Klassen abzuleiten (Bausteinklasse)

z.B. eine Class mit einer Kü- und Stenonote

Methodenfindung

Man soll nicht direkt auf die Attribute zugreifen, sondern über spezielle Methoden (z.B. get, set). Weiters sollen die Aktionen (z.B. lesen + schreiben) in getrennten Methoden angeführt sein.

Konstruktor/Destruktor

Dynamische Speicherverwaltung

= Platzreservierung, wenn das Programm läuft

in C: malloc (memory allocation / Speicher-Zuteilung)



x = malloc (2) während der Laufzeit werden 2 Byte an Speicher reserviert

*x = 50 ;

class knoten {

int z; while ( ... )

knoten *next; {

constructor knoten ® wird bei new ausgeführt .

{ .

this.next=NULL .

this.zahl=-1 p=new knoten

} p.zahl=z

} ...

delete p



Kurzsymbol für destructor knoten ® ~ knoten



Wenn eine Methode genauso wie die Klasse heißt, so ist sie ein Konstruktor

constructor kann weggelassen werden (C++, JAVA)





best fit (beste):

sucht nach dem optimalsten Speicherplatz, es können jedoch kleine Speicherreste übrigbleiben, die unbenutzt bleiben (z.B. bei 30 Byte wird ein 32 Byte-Block benutzt)



worst fit (schlechteste):

Zugriff auf den größten Speicherblock, nimmt dadurch anderen Programmen, die den Speicher benötigen, den Platz weg (z.B. bei 30 Byte werden 1000 Byte angeschnitten)



first fit (erste):

greift auf den 1. freien Speicher zu, egal wie groß der Block ist, sofern er größer als der geforderte Platzbedarf ist (z.B. bei 30 Byte 60 o. 100 Byte)


Programmierung in JAVA

bei JAVA:

· keine Mehrfachvererbung
· keine Freunde
· alles ist virtual (keine extra Eingabe von virtual)
· hat garbage collection (automatisch; destructors werden fast nicht benötigt)

Klasse in JAVA:

· Attribute
· Methoden
· Exception (Fehlerliste; catch = Stückchen Programm, das den Fehler bearbeitet)


class auto extents fahrzeug {

private float speed;

private boolean motor;

exc bertl; Aufruf z.B.: if (x=0) raise bertl

public void beschl

{

speed=speed+10.0

}

public auto

{

speed=0.0

}

}

...

catch bertl ...











Quelle:




ähnliche Referate Computer im Militärwesen
Datenbankserver - SQL
In welche Richtungen werden sich Datenbanksysteme entwickeln
TCP IP-Protokolle und Dienste
Objektorientierte Programmierung



Hier könnt Ihr die DRUCKANSICHT für das Referat öffnen




Tipp:







(c) schulnote.de 2004-2018

MEDIADATEN --- Besucher seit dem 01.09.2006
gesamt: 6726445 - heute: 1105 - gestern: 1082 - online: 9 - Rekord online: 340 - Rekord Tag: 2801


ID: 5596      Aufrufe seit dem 02.08.2011: 881