slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD) PowerPoint Presentation
Download Presentation
การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)

Loading in 2 Seconds...

play fullscreen
1 / 94

การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD) - PowerPoint PPT Presentation


  • 273 Views
  • Uploaded on

การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD). โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com xnattapong@hotmail.com. บทที่ 6 Association Abstraction. Objectives ( วัตถุประสงค์ ) เพื่อให้สามารถสร้างความสัมพันธ์ระหว่าง class ต่าง ๆ ใน problem domain โดยใช้ Association Abstraction ได้

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)' - chance


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)

โดย อ. นัฐพงศ์ ส่งเนียม

http://www.siam2dev.com

xnattapong@hotmail.com

6 association abstraction
บทที่ 6Association Abstraction
  • Objectives (วัตถุประสงค์)
    • เพื่อให้สามารถสร้างความสัมพันธ์ระหว่าง class ต่าง ๆ ใน problem domain โดยใช้ Association Abstraction ได้
    • เพื่อให้สามารถใส่ Cardinality ของความสัมพันธ์ในเชิง Association ได้ถูกต้อง
    • สามารถเขียนโปรแกรมแสดงความสัมพันธ์กับคลาส ได้
abstraction
Abstraction
  • Classification Abstraction
  • Aggregation Abstraction
  • Generalization Abstraction
  • Association Abstraction

Problem Domain

Concept

reviews
Reviews
  • Is Member Of
  • Is Part Of
  • Is Kind Of
  • Is related to
relationship
Relationship (ความสัมพันธ์)
  • ตัวอย่างความสัมพันธ์ ต่าง ๆ ในชีวิตประจำวัน
    • แม่กับลูก
    • สามีรักภรรยา
    • นายกบริหารประเทศ
    • ตำรวจทำงานอยู่ที่สถานีตำรวจ
    • น้ำอยู่ในทะเล
    • ตำรวจใส่เครื่องแบบ
    • ปากกาอยู่บนโต๊ะทำงาน
    • นักเรียนลงทะเบียนเรียน
notice
notice
  • เราสามารถจัดเอาความสัมพันธ์แบบ Aggregation เป็นความสัมพันธ์แบบ “is related to” ได้เช่นกัน เพราะการเป็นส่วนประกอบ หรือ การมีส่วนประกอบ ก็คือ ความสัมพันธ์เป็นเจ้าของ ( has a )นั่นเอง
cardinality association abstraction
Cardinality ใน Association Abstraction
  • ตัวอย่าง 6.1 , 6.2

Class Min Card Max Card

ผู้หญิง 0 (โสด) 1 (แต่งงาน)

ผู้ชาย 0 (โสด) 1 (แต่งงาน)

แม่ 1 (ลูกมีแม่ได้คนเดียว) 1 (ลูกมีแม่ได้คนเดียว)

ลูก 0 (เพราะแม่อาจไม่มีลูกก็ได้) N (มีได้มากกว่า 1 คน )

diagram association
หลักในการเขียน Diagram แสดง Association
  • ในการเขียนภาพเพื่อแสดง Association นั้น มีหลักการเขียนดังนี้
    • ลากเชื่อมต่อระหว่าง class ทั้งสอง
    • เขียนลูกศรเพื่อบอกทิศทางของการอ่านความสัมพันธ์
    • พิจารณา Class ทีอยู่ติดกับหัวลูกศร หาค่า Min Card,Max Card
    • พิจารณา Class ทีอยู่อีกด้านของหัวลูกศร หาค่า Min Card,Max Card
    • จนได้ภาพของการแสดง Association ดังรูป
slide9

มี

ลูก

แม่

1

มี

ลูก

แม่

2

0..n

มี

ลูก

แม่

3

1..1

มี

ลูก

แม่

4

1..1

0..n

มี

ลูก

5

แม่

slide10

ตัวอย่าง Association ต่าง ๆ

0..1

0..1

เป็นสามี-ภรรยา

ผู้หญิง

ผู้ชาย

0..1

0..1

เป็นสามี-ภรรยา

ผู้หญิง

ผู้ชาย

0..n

1..n

ลงทะเบียน

วิชา

นักศึกษา

association
Association
  • ความสัมพันธ์ (Relationship) ระหว่าง instances ของ classes

association

name

name direction

Order

Customer

dateReceived

issued by

isPrepaid

name

*

1

number : String

address

price : Money

creditRating( )

dispatch( )

Customer may make several orders

Order comes from one customer

associations
Associations
  • คลาสมากกว่า 1 คลาส สัมพันธ์กันด้วย “associations”
  • Association
    • เทียบได้กับ ER relationship ที่เชื่อมโยงความสัมพันธ์ระหว่างคลาส และแสดง จุดเชื่อมโยง (“links”) ระหว่าง วัตถุที่สร้างขึ้นจากคลาส
naming associations
Naming associations
  • การตั้งชื่อ association
    • หลีกเลี่ยงชื่อที่ไม่สื่อความหมาย
      • associated_with, has, is_related_to
    • มักขึ้นต้นด้วยคำกิริยา เช่น
      • works_for, owns , issued by
    • มักตั้งชื่อในกรณีที่มอง Association จากซ้ายไปขวา หรือ จากบนลงล่างของ diagram
associations on class diagrams

Person

Car

Name

Address

Telephone

Manufacturer

Model

Registration

Associations on Class Diagrams

Owns

links
Links
  • วัตถุแต่ละวัตถุ สามารถเชื่อมโยงกันได้ โดยใช้ “links”
  • A link
    • เป็น instance ของ association
  • หมายเหตุ
    • an association สามารถดำรงอยู่ได้ ถึงแม้ว่าจะไม่มี instance (links) ของ association ดังกล่าว เช่นเดียวกับ คลาสที่สามารถดำรงอยู่ได้ ถึงแม้ว่าจะไม่มีวัตถุใดๆ ถูกสร้างขึ้นจากคลาสนั้นๆ
objects links
Objects & Links

You:Person

Me:Person

Name=Jane

Address=22 Holly Pl

Telephone=62312198

Name=Dennis

Address=41 High St

Telephone=62661734

Owns

Owns

Owns

Ours:Car

Mine:Car

Manufacturer=Mazda

Model=626

Registration=YYX391

Manufacturer=Saab

Model=95

Registration=YRT833

association multiplicity

Order

Customer

dateReceived

1

*

isPrepaid

name

address

number :

String

price : Money

creditRating( )

dispatch( )

Association Multiplicity
  • multiplicity
    • หมายถึง การพิจารณาจำนวน instances (objects) ของคลาสหนึ่ง ที่สามารถเชื่อมโยงกับ instance (object) ของคลาสที่เกี่ยวข้อง
association multiplicity1
Association Multiplicity

1

1..*

Class

Class

exactly one

one or more

0..1

*

Class

Class

many (zero or more)

zero or one/at most one

2 ..4

Class

as specified

example of multiplicities
Example of Multiplicities

*

*

Student

University

Body

Heart

2-3

Bicycle

Wheel

*

1..*

1..*

Account

Owner

*

*

associations objects classes
Associations, Objects & Classes
  • สำหรับ association ใดๆระหว่าง 2 วัตถุ สามารถมี link ได้ตั้งแต่ 0 ถึง 1 link
  • ระหว่าง 2 วัตถุ สามารถมี association ได้มากกว่า 1 association (Multiple Assoications) แต่ association เหล่านั้นจะต้องมีความแตกต่างในด้านความหมายของ association
  • Multiple associations ระหว่างคลาสกำหนดให้ ตั้งชื่อ associations
roles
Roles
  • role
    • หมายถึง ชื่อที่กำหนดให้กับด้านปลายของ association ซึ่งระบุวิธีการในการที่คลาสมีส่วนร่วมใน association
  • ปกติชื่อของ role มักเกิดขึ้นเป็นคู่ (เช่นทั้งสองด้านของ association จะมีชื่อของ role
  • บังคับให้กำหนดชื่อของ Role กับ associations แบบreflexive (Reflexive associations)
role names

Person

Works for

*

Company

Name

Insurance no.

Address

Name

Address

employer

employee

Rolenames

Role names
  • Role ระบุ ชื่อให้กับด้านปลายของ association
association names roles
Association Names & Roles
  • association อาจมีชื่อได้เช่นเดียวกับชื่อของ role ที่กำหนดให้กับด้านปลายของความสัมพันธ์
    • ถ้ามีการตั้งชื่อ association แล้วมักไม่มีการตั้งชื่อ role อีก
    • ถ้ามีการตั้งชื่อที่ปลายของ association (ได้แก่ roles) แล้วมักไม่มีการตั้งชื่อ association อีก
role names1

Person

Name

Insurance no.

Address

Manager

Supervises

Salesperson

Role names
  • บังคับให้กำหนดชื่อของ Role ให้กับที่เกิดขึ้นระหว่าง link ของวัตถุที่สร้างจากคลาสเดียวกัน
a reflexive association
A Reflexive Association
  • association ที่สร้างจากคลาสเดียวกัน

Person

Parent

Name

Address

Telephone

2

Role name

Child

*

ternary associations
Ternary Associations
  • A ternary association
    • เป็น assocation ที่ประกอบด้วย 3 คลาส
  • เช่นเดียวกับแนวคิดของ ternary relationship ในER modelling และแนวคิดคล้ายๆ กัน
  • นำเสนอโดยใช้รูปสี่เหลี่ยขนมเปียกปูน เชื่อมโยงกับคลาสที่เกี่ยวข้อง
ternary associations1
Ternary Associations

Vendor

Customer

Product

Sale

Ternary association

ternary association multiplicity
Ternary Association Multiplicity
  • multiplicity ของ ternary associations
  • ซับซ้อนกกว่า binary และ unary associations
  • มักเป็น แบบ “many” สำหรับคลาสที่เกี่ยวข้อง participating
n ary associations
N-ary Associations
  • โดยทั่วไปแล้ว association อาจเชื่อมโยงกับคลาสจำนวนเท่าใดก็ได้
  • ถ้าเชื่อมโยงคลาสมากกว่า 2 คลาสขึ้นไป (รวมทั้ง ternary) เรียกว่า “n-ary” associations
  • แต่ Associations ที่เชื่อมโยงมากกว่า 0 คลาสมักหาได้ยาก
summary basic notation for associations
Summary: Basic notation for associations

Association name

mult1

mult2

Class B

Class A

role_B

role_A

  • ตัวอย่างเช่น

contains

*

1

Order

Order Line

line items

association classes
Association Classes
  • Link จะถูกพิจารณา เช่นเดียวกับการที่วัตถุถูกพิจารณาจาก attribute ของวัตถุนั้น
  • attribute ควรผูกติดอยู่กับ association โดยใช้ association class มากกว่าที่จะเป็นของวัตถุที่เชื่อมโยง เมื่อใดก็ตามที่whenever it exists or has meaning when the link itself exists (rather than just the objects linked) - มักเกิดขึ้นบ่อยกับ many-to-many associations
association classes1
Association Classes

Student

Subject

Enrolment

ID

Name

Address

Telephone

Code

Name

Credit

*

*

Result

Mark

Association class

association classes2
Association Classes
  • association class สามารถมีส่วนร่วมใน associations อื่นๆ เช่นเดียวกับที่คลาสปกติสามารถมีได้
association classes3
Association Classes

Customer

Product

Purchase

Name

Address

Telephone

Number

Name

Price

*

*

0..1

Guarantee

Date

Length

Conditions

Claim

*

Association class

qualified associations
Qualified Associations
  • qualified association
    • หมายถึง association ที่ถูกทำให้ชัดเจนโดย attribute ที่เรียกว่า qualifier
    • พิจารณา qualified association เช่นเดียวกับแนวคิดของ weak entity type ใน ER
qualified associations1

Unqualified

Golf_Course

Hole

Name

Location

Number

Length

Par

1

*

Qualified

Golf_Course

Hole

0..1

HoleNumber

Name

Location

Length

Par

1

Qualified Associations
qualified association
Qualified Association

Tournament

Prize

Year

Position

0..1

qualified association1
Qualified association

ABC Inc. President Roger Rabbit

ABC Inc. Vice President Finances Joe Savemoney

ABC Inc. Member of board John Walker

ABC Inc. Member of board Susi Sanssouci

ABC Inc. Member of board Karl Eichbaum

XYZ Inc. President Donald Duck

Organization

Company

Function

Person

*

class diagrams hints
Class Diagrams: Hints
  • class หนึ่งสามารถเป็นส่วนร่วมได้ในหลาย diagrams
  • Diagrams ควรจะแสดงแง่มุมเฉพาะด้าน
    • จำนวนคลาสไม่มากเกินไป
    • จำนวน associations ไม่มากเกินไป
    • ซ่อน attributes และ operations ที่ไม่จำเป็นต้องแสดง
  • อาจต้องมีการสร้าง diagram ซ้ำๆ กันหลายรอบ
difference between attributes and associations
Difference between attributes and associations
  • Conceptual perspective
    • ไม่แตกต่างกันมากนัก
    • Attributes เก็บค่าเดียว (single-valued)
  • Specification/implementation perspective
    • Attribute เก็บค่า (Value) ไม่ใช่ตัวอ้างอิง (References)
      • ไม่มีการ share ส่วนของ attribute values ในระหว่าง instances ที่สร้างจากคลาสเดียวกัน
  • Often: Stores simple objects
    • Numbers, Strings, Dates, Money objects
slide41

1..n

1..1

แสงอาทิตย์

พืช

สังเคราะห์แสง

0..n

0..n

ย่อยสลาย

กิน

0..n

0..n

0..n

กิน

แบคที่เรีย

ย่อยสลาย

สัตว์

0..n

0..n

0..n

รูปแสดง Association ของห่วงโซ่อาหาร

slide42

Assignment 6

  • จงสร้าง Class Diagram ที่แสดงถึง Association ที่มี Cardinality ที่ถูกต้องของความสัมพันธ์ดังต่อไปนี้
  • นักเรียน – วิชาเรียน – อาจารย์ผู้สอน
  • ธนาคาร - สมุดบัญชี – ผู้ฝากเงิน
  • ห้องสมุด – บรรณารักษ์ – หนังสือ - หมวดหนังสือ
  • เครื่องบิน – พนักงาน – ผู้โดยสาร - อาหาร
  • ผู้จัดการ -ร้านอาหาร – ลูกค้า – อาหาร - โต๊ะอาหาร
slide43
นักเรียน – วิชาเรียน – อาจารย์ผู้สอน

0..n

0..n

วิชาเรียน

นักเรียน

ลงทะเบียนเรียน

0..n

1..n

เลือกสอนวิชา

สอน

1..n

1..n

อาจารย์ผู้สอน

slide44
ผู้จัดการ - ร้านอาหาร – ลูกค้า – อาหาร - โต๊ะอาหาร

1..n

1..n

ร้านอาหาร

ผู้จัดการ

เป็นเจ้าของ

1..n

จ่ายเงินค่าอาหาร

MK

นายตัน

1..n

Oishi

1..n

โต๊ะอาหาร

1..n

ลูกค้า

1..1

กิน

นาย ศรราม

มี

อาหาร

0..n

นางสาว สุวนันท์

slide46

Aggregation

Association Name

Direction indicator

Multiplicity

Class Diagram with Multiple Classes

Customer

BankAccount

account

- firstName : String

- balance : double

- lastName : String

1

- account : BankAccount

+

BankAccount(initBalance:double)

+ getBalance : double

+

Customer(f:String, l:String)

+ deposit(amt : double)

+ getFirstName : String

+ withdraw(amt : double)

+ getLastName : String

+ setAccount( acct:BankAccount)

+ getAccount( ) : BankAccount

Class Diagram of “Customer.java” and “BankAccount.java”

slide47

Customer Class in JAVA

public class Customer {

private String firstName;

private String lastName;

private BankAccount account;

public Customer(String f, String l) {

this.firstName = f;

this.lastName = l;

this.account = null;

}

public String getName() {

return (this.firstName + " " + this.lastName);

}

public BankAccount getAccount() { returnthis.account; }

publicvoid setAccount(BankAccount acct) { this.account = acct; }

}

slide48

BankAccount Class in JAVA

publicclass BankAccount {

privatedouble balance = 0.0;

public BankAccount(double amount) {

balance = amount;

}

publicvoid deposit(double amount) {

balance = balance + amount;

}

publicvoid withdrawn(double amount) {

balance = balance - amount;

}

publicdouble getBalance() {

return balance;

}

}

slide49

Programming with Multiple Classes

publicclass TestBanking {

publicstaticvoid main(String[] args) {

Customer cust = new Customer("Joe","Goodman");

cust.setAccount(new BankAccount(3000.0));

System.out.println("customer : " + cust.getName()

+ " : open account with balance = "

+ cust.getAccount().getBalance() + " baht.");

cust.getAccount().deposit(1250.25);

System.out.println("customer : " + cust.getName()

+ " : deposit 1250.25 baht :"

+ " current balance = "

+ cust.getAccount().getBalance() + " baht.");

cust.getAccount().withdrawn(500);

}

}

testbanking
ผลการทำงานของโปรแกรม TestBanking

---------- Java Run ----------

customer : Joe Goodman : open account with balance = 3000.0 baht.

customer : Joe Goodman : deposit 1250.25 baht : current balance = 4250.25 baht.

Normal Termination

Output completed (0 sec consumed).

slide51

cust

Customer

firstName=“John”

lastName=“Goodman”

account=null

getName

getAccount

setAccount

Programming with Multiple Classes

Object Diagram of

“TestBanking.java”“Customer.java”

and “BankAccount.java”

TestBanking

main

Class Diagram

MyDate.java

After Line 3

slide52

acct

cust

Customer

acct

acct

firstName=“John”

BankAccount

BankAccount

lastName=“Goodman”

balance=3000.0

balance=3000.0

account=null

account=acct

getName

deposit

deposit

getAccount

withdraw

withdraw

setAccount

getBalance

getBalance

Programming with Multiple Classes

TestBanking

main

Executing Line 4

Class Diagram

MyDate.java

slide53

cust

Customer

acct

firstName=“John”

BankAccount

lastName=“Goodman”

balance=3000.0

account=acct

getName

deposit

getAccount

withdraw

setAccount

getBalance

Programming with Multiple Classes

TestBanking

main

After Line 4

Class Diagram

MyDate.java

slide54

cust

Customer

acct

firstName=“John”

BankAccount

lastName=“Goodman”

balance=3000.0

balance=4250.25

account=acct

1250.25

getName

deposit

getAccount

withdraw

setAccount

getBalance

Programming with Multiple Classes

TestBanking

deposit(1250.25)

main

Executing Line 6

Class Diagram

MyDate.java

slide55

cust

Customer

acct

firstName=“John”

BankAccount

lastName=“Goodman”

balance=4250.25

account=acct

getName

deposit

getAccount

withdraw

setAccount

getBalance

Programming with Multiple Classes

TestBanking

main

After Line 6

Class Diagram

MyDate.java

slide56

Customer

BankAccount

account

- firstName : String

- balance : double

- lastName : String

*

+

BankAccount(initBalance:double)

- account : BankAccount []

+ getBalance : double

+

Customer(f:String, l:String)

+ deposit(amt : double)

+ getFirstName : String

+ withdraw(amt : double)

+ getLastName : String

+ setAccount( acct:BankAccount)

+ getAccount( ) : BankAccount

“account” is an array of BankAccount

Multiplicity

Class Diagram with Multiple Classes

Class Diagram of “Customer.java” and “BankAccount.java”

slide57

Aggregation

Association Name

Direction indicator

Multiplicity

Class Diagram with Multiple Classes

Customer

BankAccount

account

- firstName : String

- balance : double

- lastName : String

1

- account : BankAccount

+

BankAccount(initBalance:double)

+ getBalance : double

+

Customer(f:String, l:String)

+ deposit(amt : double)

+ getFirstName : String

+ withdraw(amt : double)

+ getLastName : String

+ setAccount( acct:BankAccount)

+ getAccount( ) : BankAccount

Class Diagram of “Customer” and “BankAccount” in VB.NET

customer class in vb net
Customer Class in VB.NET

PublicClass Customer

Private firstname AsString

Private lastname AsString

Private BankAcc As BankAccount

PublicSubNew(ByVal F AsString, ByVal L AsString)

'... constructor method

firstname = F

lastname = L

EndSub

PublicFunction getFullName() AsString

ReturnMe.firstname & " " & Me.lastname

EndFunction

PublicFunction getBankAcct() As BankAccount

ReturnMe.BankAcc

EndFunction

PublicSub setBankAcct(ByVal acc As BankAccount)

Me.BankAcc = acc

EndSub

EndClass

bankaccount class in vb net
BankAccount Class in VB.NET

PublicClass BankAccount

Private balance AsDouble = 0.0

PublicSubNew(ByVal amt AsDouble)

Me.balance = amt

EndSub

PublicSub Deposit(ByVal amt AsDouble)

Me.balance += amt

EndSub

PublicSub Withdraw(ByVal amt AsDouble)

Me.balance -= amt

EndSub

PublicFunction getBalance() AsDouble

ReturnMe.balance

EndFunction

EndClass

slide60

Testing BankAccount in VB.NET

1.สร้าง Project ใหม่ โดยไปที่เมนู File เลือก New แล้วเลือก Project2.สร้างฟอร์มและ เพิ่ม Button ลงในฟอร์มดังรูป3. ดับเบิ้ลคลิกที่ปุ่มเพื่อเขียนคำสั่ง

button
คำสั่งในปุ่ม Button

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Cust As Customer

Cust = New Customer("Nattapong", "Songneam")

Cust.setBankAcct(New BankAccount(3000.0))

MsgBox(Cust.getFullName & " มียอดเงิน¹ = " & _

Cust.getBankAcct.getBalance)

Cust.getBankAcct.Deposit(20000.75)

Cust.getBankAcct.Withdraw(5331.35)

MsgBox(Cust.getFullName & " มียอดเงิน = " & _

Cust.getBankAcct.getBalance)

Dim cust2 As New Customer("Joe", "Goodman")

cust2.setBankAcct(New BankAccount(500.5))

cust2.getBankAcct.Deposit(17700)

MsgBox(cust2.getFullName & " มียอดเงิน = " & _

cust2.getBankAcct.getBalance)

End Sub

slide62

เริ่มต้นเปิดบัญชีของ Nattapong

มีการฝากและถอนจากบัญชีของ Nattapong

เริ่มต้นเปิดบัญชีของ Joe Goodman

class diagrams
Class Diagrams
  • are widely used to describe the types of objects in a system and their relationships.
  • model class structure and contents using design elements such as classes, packages and objects.
  • describe three different perspectives when designing a system, conceptual, specification, and implementation.
  • These perspectives become evident as the diagram is created and help solidify the design.
class diagrams contd
Class Diagrams(contd)
  • Classes are composed of three things: a name, attributes, and operations.
class diagrams contd1
Class Diagrams(contd)

Consider a simple class to represent a point on a plane:

class diagrams contd3

Point

Class Diagrams(contd)
  • Member visibility or visibility adornment

+ (public)

- (private)

  • Attributes and/or operations can be omitted. (no adornments)
class diagrams contd5
Class Diagrams(contd)

Here is a class that represents rectangles using a Point, a width, and a height:

class diagrams inheritance
Class Diagrams-inheritance
  • Another common relationship in class diagrams is a generalization. 
  • A generalization is used when two classes are similar, but have some differences. 
  • Look at the generalization below:
class diagrams inheritance3
Class diagrams-inheritance

A simple example of inheritance in Java:

class diagrams dependency and association
Class Diagrams-dependency and association
  • If a change in class B may affect a class A, then it is said that A depends on B.
  • In java, creating an instance of a class, or passing a class instance as a parameter creates dependency:
class diagrams dependency and association3
Class Diagrams-dependency and association
  • An association is unidirectional if a class C has an attribute of class type D, but D makes no use of C:
class diagrams dependency and association4
Class Diagrams-dependency and association
  • This diagram shows that there is navigation (visibility) from C to D, but not from D to C:
  • Association implies dependency.
  • In Booch’s notation it would be said that C has-a D.
class diagrams dependency and association5
Class Diagrams-dependency and association
  • If two classes have attributes referencing objects of each other’s type, a bidirectional association exists:
class diagrams dependency and association6
Class Diagrams-dependency and association
  • A bidirectional association, with navigability from each class to the other, is shown by a line with no arrowhead:
class diagrams contd8
Class Diagrams(contd)
  • Class diagrams also display relationships such as containment, inheritance, associations and others. 
  • Below is an example of an associative relationship:
when to use class diagrams
When to Use: Class Diagrams
  • Class diagrams are used in nearly all Object Oriented software designs.
  • Use them to describe the Classes of the system and their relationships to each other.
how to draw class diagrams
How to Draw: Class Diagrams
  • Before drawing a class diagram consider the three different perspectives of the system the diagram will present;
    • conceptual,
    • specification, and
    • implementation. 
  • Try not to focus on one perspective and try see how they all work together.
how to draw class diagrams1
How to Draw: Class Diagrams
  • When designing classes consider what attributes and operations it will have. 
  • Then try to determine how instances of the classes will interact with each other.
  • These are the very first steps of many in developing a class diagram. 
  • However, using just these basic techniques one can develop a complete view of the software system.
object diagram
Object Diagram
  • Shows a configuration of objects at a point in time.
  • After execution of this code,

Point corner = new Point(3,4);

Rectangle r = new Rectangle(corner,5,10);

object diagram1
Object Diagram
  • Note that an underlined name in the name compartment is the indication that an object is at hand.
  • The “name” has the form

instance-name : type.

  • If desired, various elements may be omitted.