HT-11-BV
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.
HT-11-BV

Das ist das forum der Klasse HT11BV des Berufskolleg fuer Technik und Medien
 
StartseiteStartseite  SuchenSuchen  Neueste BilderNeueste Bilder  AnmeldenAnmelden  Login  

 

 Grundlagen und Vererbung

Nach unten 
AutorNachricht
da_real_michi
Stammi
Stammi
da_real_michi


Anzahl der Beiträge : 96
Anmeldedatum : 20.11.07

Grundlagen und Vererbung Empty
BeitragThema: Grundlagen und Vererbung   Grundlagen und Vererbung Icon_minitimeFr März 07, 2008 12:05 am

Also da es ja allgemein Probleme gibt, was genau der ganz Kram in Info bedeutet werde ich hier ma paar kleine Grundsachen erklären, mit Beispiel.

Teil 1: Klassen - Grundlagen
Was ist eine Klasse ?
Eine Klasse ist ganz "einfach" ein Objekt das verschiedene Inhalte, Eigenschaften und Methoden tragen kann.


Was ist eine Eigenschaft ?
Eine Eigenschaft ist so gesehen, ein Wert der innerhalb einer Klasse/ eines Objektes gespeichert ist und mit diesen kann man über Methoden arbeiten. Das bedeutet, Dinge ausrechnen , Werte ausgeben lassen, einfach nur zwichenspeichern etc.


Was ist eine Methode ?
Eine Methode ist eine Funktion IN einer Klasse/ einem Objekt.
Diese Funktion kann z.B. das Alter eines Meerschweinchens ausgeben wenn du nur die Anzahl der Tage übergibst.


Beispiel:
Code:

class abc
{
    public int x;
    int y;
}

Was bedeutet "class abc"
"class abc" bedeutet, dass man eine eigene Klasse definiert mit dem Namen "abc".
Alles was zwichen { und } steht bezieht sich auf die Klasse "abc".


Was bedeutet hier z.B. "public int x"
a) Was bedeutet "public" vor einer neuen Variable ?
"public" bewirkt, dass man auch von aussen auf die Variable zugreifen darf,
was das genau heißt erklär ich gleich noch.
b) Was bedeutet das ganz ?
Nun ganz einfach, der Klasse /dem Objekt "abc" wird ein integer Wert "x"
zugeteilt, auf den man von aussen zugreifen darf, ohne "public" dürfte man
nicht von aussen darauf zugreifen. Das beudeutet, dass man nur innerhalb
der Methode mit dem Wert "x" rechnen könnte, jedoch kann man ihn nie
direkt ausgeben.


Was ist gemeint mit "von aussen zugreifen" ?
Das bedeutet wenn man NICHT "public" vor "int x" schreibt, teilt man der Klasse mit,
dass diese Variable nur zum lokalen gebrauch verwendet werden darf. Das heißt man
kann zwar mit "x" Dinge rechnen nachdem man Werte irgendwie anders übergeben hat, aber man kann keine Werte direkt an die Klasse /das Objekt übergeben oder ausgeben ! Oben steht vor "int y" kein "public".


Wie erstelle ich in C# nun so eine Klasse, um sie zu benutzten ?
Code:

class abc
{
    public int x;
    int y;
}

abc test = new abc();
test.x = 4;
http://test.y = 5;

Was bedeutet "abc test = new abc();" genau ?
Da wir in Info ja schon mal wegen den Verbunden so etwas eingeben musste, ist das so gesehen ( in dem Sinne Very Happy ) nix neues. Aber was genau das eigentlich bedeutet hat Frau Althaus selbstverständlich noch nicht erklärt.
Alsoooo, "abc test" bedeutet, das wir eine neue Variable vom Typ "abc" definieren. Das ist das gleiche Prinzip, als wenn wir "int test" schreiben, nur das hier "test" vom Typ "int" währe.
"abc test = new abc();" bedeutet das wir eine Variable (eigentlich ein Objekt, aber das is Sinngemäss das gleiche) "test" vom Typ "abc" und daraus noch eine Instanz der Klasse "abc" bilden. Klingt zwar komig is aber so. Jetzt fragt ihr euch sicher was Instanz bedeutet, naja das dumme Wort hab ich nicht erfunden, es heißt aber so ^^.
Und das bedeutet wenn wir nur "abc test;" schreiben würden, hätten wir zwar ein Variable des Typs "abc" aber wir könnten die Eigenschaften oder Methoden dieser Variable nicht benutzten. D.h. müssen wir mit "abc test = new abc();" noch zusätzlich eine Instanz aus der Klasse "abc" in "test" bilden.

Lest das lieber 2 mal , is ziehmlich schwer zu kapieren, aber es geht ^^


Was bedeutet "test.x = 4" ?
Da wir "x" in der Klasse "abc" als "public" definiert haben, kann man direkt von aussen auf den Wert /die Eigenschaft mit Hilfe der Punktschreibweise zugreifen.


Warum steht vor "test.y = 5" noch " // "
Da wir "y" in der Klasse "abc" nicht als "public" definiert haben, dürfen wir auch nicht direkt von aussen auf diesen Wert /Eigenschaft zugreifen. Wenn man " // " vor etwas schreibt, dann wird das zwar mit abgespeichert, aber wenn man das Programm startet, dann überspringt der Compiler (Übersetzter) alles was da hinter steht. Wenn man das " // " in dem Falle weglassen würde, dann startet das Programm auch nicht.



So viel zum Thema Grundlagen......

Teil 2: Klassen - Methoden
Wie erstelle ich eine Methode in einer Klasse ?
Dazu schreibt man einfach:
Code:

class abc
{
    public int x;
    public int y;

    public plus (int z, int w)
    {
          return z+w;
    }
}

Was bedeutet jetzt, der zusätzliche Teil ?
"public plus (int z, int w)" bedeutet das wir eine Methode in der Klasse definieren , mit den Parameter "int z" und "int w" (auch als "public", damit wir sie überhaupt von aussen benutzten können)


Was sind Parameter ?
Nun ein Parameter ist eine Angabe, z.B. ein Wert einer Zahl wie in dem Fall "z" und "w" die beim Aufruf der Methode gebraucht werden um überhaupt, mit ihr arbeiten zu können. Werden sie beim Aufruf nicht mit angegeben stürzt das Programm ab !


Was bedeutet "return z+w"
Nun "return z+w" bedeutet Wort wörtlich genommen... "gib das Ergebnis von z plus w nach aussen hin zurück".

Beipspiel:
Code:

class abc
{
    public int x;
    public int y;

    public plus (int z, int w)
    {
          return z+w;
    }
}

int ausgabe, ausgabe2;

abc test = news abc();
test.x = 4;
test.y = 10;
ausgabe = test.plus(5, 4);
ausgabe2 = test.plus(test.x , test.y);

Mit den 2 letzten Zeilen haben wir nun beides mal die Methode "plus" aus der Klasse aufgerufen. Durch das "return" wird das Ergebnis aus "z + w" zurückgegeben, beim ersten Fall an die Variable "ausgabe" und im 2 Fall an die Variable "ausgabe2".
Im ersten Fall haben wir manuell die Zahlen (Parameter) 5 und 4 mitgegeben. Und im 2 Fall, haben wir einfach die Variablen aus den vorher definierten Werten /Eigenschaften "text.x" und "text.y" übergeben. Beides is möglich ! Somit steht jetzt in "ausgabe" 9 und in "ausgabe2" steht nun 14.

Das war nur erst mal ein kleine Beispiel einer Methode.



Teil 3: Klassen - Vererbung
Was ist Vererbung ?
Man kann sich das in der Programmierung genaus so vorstellen wie im echten Leben.
Man hat eine sogenannte "Mutterklasse" und eine "Basisklasse" (Kinderklasse). Wenn man 1 Klasse "rechnen" hat und eine Klasse "erweitert" , dann kann man z.B. der Klasse erweitert alle Eigenschaften und Methoden aus der Klasse "rechnen" Vererben (mit geben, übertragen) und muss nicht alles noch einmal extra reinschreiben.

Beispiel:

Code:

class rechnen
{
    public int x;
    public int y;

    public plus()
    {
          return this.x + this.y;
    }
}

class erweitert : rechnen
{
    public minus()
    {
          return this.x - this.y;
    }
}

int ausgabe, ausgabe2, ausgabe3;

rechnen test = new rechnen();
erweitert test2 = new erweitert();
test.x = 6;
test.y = 11;
ausgabe = test.plus();

test2.x = 7;
test2.y = 15;
ausgabe2 = test2.plus();

test2.x = 20;
test2.y = 1;
ausgabe3 = test2.minus();


Was bedeutet das "this" vor "x" und "y" ?
Wenn man eine Methode innerhalb einer Klasse erstellt, dann muss man, wenn man möchte, dass die Methode beim ausrechnen die Werte/Eigenschaften "x" und "y" aus der Klasse benutzt "this" davor schreiben mit einem " . " .Wenn man das nicht macht dann nimmt er beim aufruf nur die lokalen Variablen "x" und "y" aus den einzelnen Methoden. Nicht aber die aus der Klasse selbst.


Was bedeutet "class erweitert : rechnen" ?
Das bedeutet, dass man eine neue Klasse "erweitert" erstellt , diese bekommt jedoch direkt die Eigenschaften und Methoden von der vorigen definierten Klasse "rechnen" , sodass man nicht noch einmal extra z.B. "public int x" schreiben muss ! (Es werden aber keine Werte übergeben !!! Also die Eigenschaften "x" und "y" sind noch leer und haben keinen Inhalt !!! )

Dadurch kann man nun auch mit der Variable test2 die Methode plus aufrufen, obwohl diese gar nicht oben selber definiert wurde. Sondern nur durch die Vererbung übergeben ! Man muss beachten nur weil test2 jetzt "plus()" und "minus()" ausführen kann, heißt das noch lange nicht das "test" nun auch "minus()" ausführen kann. "test" kann immer nur noch "plus()" ausführen !!!

In "ausgabe" steht nun 17 , in "ausgabe2" steht 22 und in "ausgabe3" steht 19.




Sooo das wars erst mal, ich hoffe ich konnte euch ein kleinwenig helfen und das auch nicht zuuu lange war. Habe mich schon so kurz wie möglich gefasst. Kann sein, dass ihr euch manchmal so vorkahmt als ob ich euch für dumm verkaufen wollen, aber ich wollte es einmal wirklich richtig erklären, damit es auch gut verständlich ist Very Happy:D ...das hoffe ich zu mindest. Würde mich über Rückmeldungen freuen höhö !


lg micha


Zuletzt von da_real_michi am Fr März 07, 2008 12:07 am bearbeitet; insgesamt 1-mal bearbeitet
Nach oben Nach unten
 
Grundlagen und Vererbung
Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
HT-11-BV :: Unterricht/Hausaufgaben/Lehrer :: Info-
Gehe zu: