# Klasse und Objekt



## der gute (29. Aug 2003)

Hi,
ich habe ein kleines Problem und hoffe ihr könnt mir weiterhelfen.Es ist kein Programmierproblem sondern halt nur das ich etwas nicht verstehe ob richtig oder falsch.

Es existiert eine Klasse (z.B. Kunden) in dieser gibt es die Methoden (z.B get_adresse(), show_daten() usw.) das Objekt erstelle ich mit dem Parameter (Kundenid) soweit so gut (logisch für mich) was aber wenn ich einen neuen Kunden anlegen will, meine Lösung Parameter (None) weil ich sauber Programmiere :wink:   benutze ich natürlich als erstes die Methode (erstelle_kunde()) welche mir die Id zurückgibt (wird aus DB geholt).

Nun ist das aber so richtig oder nicht. 

Was ist wenn ich get_adresse() mit meinem Objekt aufrufe und nicht erstelle_kunde() angewendet habe. Müßte ich halt abfangen.

Kann leider auch nicht beim erstellen des Objektes gleich ein DB-eintrag erstellen weil mehrere Tabellen verknüpft sind und diese erst gefüllt werden müssen.

Ich hoffe ihr habt es so in etwa verstanden was ich meine

der gute sagt danke.


----------



## Nobody (29. Aug 2003)

wenn ich das richtig verstanden habe, dann hast du ein objekt kunde mit verschiedenen eigenschaften, unter anderem der addresse und der userid(kundennummer). und das objekt existiert bereits, ist aber noch nicht gefüllt und hat daher nur eine user id dann funktioniert das abfangen mit einer einfachen if bedingung und zwar sieht das etwa so aus:

```
if(kunden.get_addresse()!=null){             //es heist null nicht none
  //was auch immer du damit anstellen willst
} else {
  //fehlerabfangung
}
```

wenn du aber auf kunden.get_addresse zugreifst bevor dieses objekt überhaupt existiert dann könntest du das ganze mit einer try und catch anweisung abfangen:


```
try {
  //was versucht werden soll
}
catch (RuntimeException r){         //oder welche fehlerklasse deinen wünschen entspricht
  //fehlerbehandlung 1
}
catch (......) {                             //wenn du mehrere unterschiedliche fehlerarten anders abfangen willst
  //fehlerbehandlung n
}
```


wenn ich was falsch verstanden habe korriegiere mich. wobei du das zweite auch mit dem ersten verknüpfen könntest


----------



## der gute (29. Aug 2003)

Nobody hat gesagt.:
			
		

> wenn ich das richtig verstanden habe,
> 
> dann hast du ein objekt kunde mit verschiedenen eigenschaften,
> 
> unter anderem der addresse und der userid(kundennummer).



ja solange es kein neukunde ist



			
				Nobody hat gesagt.:
			
		

> und das objekt existiert bereits, ist aber noch nicht gefüllt und hat daher nur eine user id



das Objekt wird angelegt mit der userid als Parameter(zb. nach einloggen)



			
				Nobody hat gesagt.:
			
		

> dann funktioniert das abfangen mit einer einfachen if bedingung und zwar sieht das etwa so aus:
> wenn du aber auf kunden.get_addresse zugreifst bevor dieses objekt überhaupt existiert dann könntest du das ganze mit einer try und catch anweisung abfangen:



meine Frage ist eigentlich ob es fehlerhaft oder anders ob es saubere OOP ist wenn ich das Objekt ohne Userid anlege(None als Parameter)und dann halt wissen muß das ich nicht getadresse()aufrufen kann bzw wenn ich es aufrufe in dieser Methode es abfange.



			
				Nobody hat gesagt.:
			
		

> wenn ich was falsch verstanden habe korriegiere mich. wobei du das zweite auch mit dem ersten verknüpfen könntest



Nun ich wußte selber nicht wie ich das genau erklären soll aber trotzdem danke für die Antwort

der gute


----------



## Nobody (29. Aug 2003)

also es ist laut meinen lehrern möglich und elegant dies zu tun (und ich denk mal die versuchen uns gewisse normen zu lehren).
zum erstellen wurde mir folgendes eingebläut:

die klasse die das objekt kunde beschreibt nennt sich Kunde

```
Kunde kunde = new Kunde(userid);
```

in der klasse muss dann der default konstruktor in etwa so aussehen:

```
.
.
.
public Kunde(int userid){       //oder welchen typ die kunden nr auch immer hat
this.userid=userid;
.
.
.
```

hab das jetzt mal nur angerissen, denn rest (mit der schliessenden '}') kannst du auch selbst setzen. nur mal so zur erinnerung. ich hoffe du hast es damit verstanden, ansonsten melde dich nochmals.

also die übergabe von null (standartgemäß ohne ausnahme) ist aboslut sinnlos, da dieser wert ja bereits vordefiniert ist.


----------

