0 Daumen
4,7k Aufrufe

Nachdem mein Versuch, vorgegebene Datentypen in ein Klassendiagramm zu schreiben, bemerkenswert kläglich scheiterte, heute nun the-other-way-round: Ein UML Diagramm in Python umsetzen:

Insbesondere frage ich mich, wie bei der Implementierung zwischen Vererbung, Aggregation und gerichten Assoziationen unterschieden wird. Scheinbar gibt es d 2000 Tutorials mit 30000 unterschiedlichen Lösungsansätzen. Außerdem weiß ich nicht, was genau die einzelnen Objekte tuen, bspw. steht beim Professor nur Kostencenternummer als geschütze Variable. Und der WiMi macht anscheinend gar nichts. Was schreibe ich in die getter und setter? Hier der bisherige Ansatz


######Vererbung
"""This programm models the UML diagram of the inheritante between
members and professors.
"""

class Member:
    name = ""

    def __init__(self, name, id_number):
        self.name = name
        self.id_number = id_numer


class Professor(Member):
    def __init__(self, name, id_number, cost_center_no):
        self.name = name
        self._cost_center_no = _cost_center_no

    def get_cost_center_no(self):
        # Wie Kostenstellennummer umsetzen?
       
class WiMi(Member):
    def __init__(self, name, id_number):
        self.name = name


###Aggregation

class Presentation:
    def __init__ (self, title, date):
        self.title = name
        self.date = date

    def change_date(self):
        print ("Class Owner: method1")

#gerichtete Assoziation

class research_group:
    def __init__(self, name, total_presentation):
        self.name = name
        self.total_presentation = total_presentation
        self.name = name

    def get_members(id_number, name, total_representation):

    def get_head (id_number, name, total_reprensentation)

    def set_head (id_number, name, total_reprensentation)

    def add_member (id_number, name, total_representation)


Was machen diese Methoden?

strumpa pumpa.png

Avatar von

1 Antwort

0 Daumen
class Professor(Member):

Klasse Professor erbt von Klasse Member.

class ResearchGroup:
def __init__(self):
self.member_of = []

def add_member(self, member):
""" Adds a member to this research group """
if (isinstance(member, Member)):
self.member_of.append(member)
else:
raise TypeError("Argument must be of type Member.")

    def get_members(self):
    """ Returns a list of members of this research group """
return self.member_of

Es gibt eine Assoziation von der Klasse ResearchGroup zur Klasse Member, weil es eine Methode der Klasse ResearchGroup gibt, die die Klasse Member verwendet.

Die Assoziation ist gerichtet, weil die Klasse Member nichts von der Klasse ResearchGroup weiß.

class Presentation:
def __init__(self, title, date, member):
self.title = title
self.date = date
self.member = member

Hier gibt es eine Aggregation, weil Objekte der Klasse Presentation u.a. aus einem Objekt der Klasse Member bestehen. Es ist keine Composition, weil Objekte der Klasse Member unabhängig von Objekten der Klasse Prsentation existieren können.

Avatar von 5,7 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community