Projekte vorschlagen..

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mr.White
User
Beiträge: 46
Registriert: Samstag 7. März 2015, 20:03

Hallo.

Könnt ihr mir bitte ein Projekte vorschlagen, welche auch dafür geeignet ist OOP zu lernen ?
Währe echt nett..

Und bitte nur Entwürfe die auch Sinnvoll sind und nicht sowas wie - "lern es einfach".



Danke im voraus.
Woddy
User
Beiträge: 5
Registriert: Sonntag 29. März 2015, 22:36

Mr.White hat geschrieben:Hallo.

Könnt ihr mir bitte ein Projekte vorschlagen, welche auch dafür geeignet ist OOP zu lernen ?
Währe echt nett..

Und bitte nur Entwürfe die auch Sinnvoll sind und nicht sowas wie - "lern es einfach".



Danke im voraus.

Sowas hier koenntest du machen....

Code: Alles auswählen

#!/usr/bin/env python3

class Kunde():
    def __init__(self, name, kontonummer, blz, kontostand):
        self.name = name
        self.kontonummer = kontonummer
        self.bankleitzahl = blz
        self.kontostand = kontostand
    def einzahlen(self, betrag):
        self.kontostand += betrag
        self.ausgabe
    def auszahlen(self, betrag):
        self.kontostand -= betrag
        self.ausgabe
    def ausgabe(self):
        print("Name:", self.name,"Kto.:", self.kontonummer, \
              "BLZ.:", self.bankleitzahl, "Betrag:", self.kontostand, "Euro")    

kunde1 = Kunde("Juergen", 10001, 500500, 230)
kunde1.ausgabe()
kunde1.einzahlen(12)
kunde1.ausgabe()

BlackJack

@Woddy: Das `self.ausgabe` in der Ein- und Auszahlmethode gehört da nicht hin und die 1 bei `kunde1` sollte da nicht stehen.

Die `ausgabe()`-Methode würde ich auch nicht in diese Klasse stecken. Man könnte der eine `__str__()`-Methode verpassen und Konto-Exemplare dann einfach mit `print()` ausgeben.

Zwischen den Methoden steht normalerweise eine Leerzeile und der Code auf Modulebene sollte in einer Funktion stehen.
Woddy
User
Beiträge: 5
Registriert: Sonntag 29. März 2015, 22:36

BlackJack hat geschrieben:@Woddy: Das `self.ausgabe` in der Ein- und Auszahlmethode gehört da nicht hin und die 1 bei `kunde1` sollte da nicht stehen.

Die `ausgabe()`-Methode würde ich auch nicht in diese Klasse stecken. Man könnte der eine `__str__()`-Methode verpassen und Konto-Exemplare dann einfach mit `print()` ausgeben.

Zwischen den Methoden steht normalerweise eine Leerzeile und der Code auf Modulebene sollte in einer Funktion stehen.
Danke für den Hinweis!
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Woddy: Der Backslash in ausgabe ist überflüssig, weil die Klammern schon die zwei Zeilen miteinander verbinden. Und die Methode in den anderen Methoden einfach nur zu referenzieren bringt nichts. Die Zeilen gehören da sowieso nicht hin.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@Woddy: ich würde eher die folgende Struktur empfehlen:

Code: Alles auswählen

class Kunde: pass
class Konto: pass

def einzahlen(kunde, konto, betrag): pass
Das ist flexibler, da nun ein beliebiger Kunde auf ein beliebiges Konto einzahlen darf. So hast Du auch eine bessere Trennung zwischen den Daten (Kunde, Konto) und den Aktionen gegen diese Daten.
Antworten