알파카징징이 알파카징징이 코딩하는 알파카

데이터 구조 및 분석 ch_2_6 Structure and Relationship

» 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