데이터 구조 및 분석 ch_2_6 Structure and Relationship
Jul 9, 2021
»
writing
KAIST 산업및시스템공학과 문일철_ 데이터 구조 및 분석 수업을 참고하여 작성하였습니다
ch_2_6 Structure and Relationship
Structure and Relationship
1. Aggregation
- Generalization between class
- (= is-a relatinshipe)
- Inheritance relationship(superclass & subclass)
- Customer -> Person
: From subclass
: To superclass
: Direction of generalization
- Hollow triangle shape
- Base Class -> Person
- Leaf class -> Park::Customer
2. Association
- Association between classes
- (= has-a relationship)
- Member variable (얼마나 복수개 가지고 있냐)
: A customer has a number of holding accounts (하나)
: An account has an account holdelr customer
- Simple line
- If a simple arrow is added
: A customer has a reference to bank accounts
: A bank account has a reference to a customer
: Navigability
- Line ends are tagged by role
: Account holder
: Holding accounts
: with prefix showing the visibility
ex)
Customer (1) <-------------> BankAccounts (* many)
class Customer :
ID = "No one"
lstAccounts = []
def addBankAccount(self, account):
self.lstAccount.append(account)
class BankAccount :
strAccountHolder = "No one"
def changeAccountHolder(self, holder):
self.strAccountHolder = holder
2. Multiplicity of Association - In computer science and engineering - * often menas many - 1 * : 1 to Many - * = 0 * : 0 to Many - 1 : Exactly one - 0 .. 1 : One or zero - If not specified, it menas one
3. Aggregation - Special case of association - Special has-a relationship - part-whole or part-of relationship - A family member is part of a family - Hollow diamond shape - Aggregation often occur - when an aggregating class is a collection class - when the collection class's life cycle depends on the collected classes ex) Family (1)(+has members) 다이아-------> FamilyMember(1..*)(#Consist of)
4. Dependency - use relationship - An engineer use a calculator - Local variables - Method signatures (parameter types) - Method return types - Something that you import for the implementation ex) Engineer ---------> Calculator
class Calculator :
def calculateLSomething(self) :
return ....
class Engineer :
def drawFloorplan(self) :
calc = Caclulator()
value = calc.calculateSomething()
return value