SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Pemodelan Perangkat Lunak
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Properti dari diagram kelas yaitu -  Model statis : -  Memodelkan struktur dan perilaku -  Digunakan sebagai dasar dari diagram lainnya - Mudah untuk diubah ke dalam diagram obyek Nam a Attribut Opera si
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],Sintak atribut : Visibility name:type=init_value{property_string}
Invoice + amount : real + date : date = current date + customer : string + specification : string - administrator : string = "unspecified" - number_of_invoices : integer + amount : real + date : date = current date + customer : string + specification : string - administrator : string = "unspecified" - number_of_invoices : integer + status : status = unpaid { unpaid, paid } UNIXaccount + username : string + groupname : string + filesystem_size : integer + creation_date : date - password : string UNIXaccount + username : string + groupname : string = “staff" + filesystem_size : integer + creation_date : date - password : string Invoice
Public class UNIXaccount { public string username; public string groupname = "csai"; public int filesystem_size; public date creation_date; private string password; static private integer no_of_accounts = 0 public UNIXaccount() { //Other initialisation no_of_accounts++; } //Methods go here }; UNIXaccount + username : string + groupname : string = “staff" + filesystem_size : integer + creation_date : date - password : string - no_of_accounts : integer = 0
Public class Figure { private int x = 0; private int y = 0; public void draw() { //Java code for drawing figure } }; Figure fig1 = new Figure(); Figure fig2 = new Figure(); fig1.draw(); fig2.draw(); Figure - x : integer = 0 - y : integer = 0 + draw()
 
Person Car Drives   * * Driver Company car Person Car * * Adult Company car Employee Drives   1 1 Driver Driver Person Person Married to   Husband Wife Domestic appliance Family member  · Turns on Heater ·    Cleans Toaster Dad  ·  Tunes Child Radio Mum
Person Car * Plates User PID Process Host IP-addr * * Item of clothing Male person 0 ..* Female person 0 ..* {or} 1 1
Library Books * 1 ..* {ordered by date} Member {ordered by surname} * 1 ..* Person Establishment Bank card Client 0 ..* No qualified or aggregation  associations allowed in ternary. 1 ..* Credit card Shop 1 ..*
 
Host Printer 1 ..* Network Network adapter 1 * 1 Queue Adapter Print spooler Notary Client Contract Purchaser Real-estate Computer
 
Car Wheels Body Engine Wiring * * * * Note that association  multiplicity is shown  within the classes
 
Zoo Mammal Bird Falcon Monkey Giraffe 0..* 0..* 0..* Zoo Monkey[0..*]: Mammal Giraffe[0..*]: Mammal Human[1..*]: Mammal Falcon[0..*]: Bird Cage[1..*]: Equipment Equipment Human 1..* Cage 1..* My family Family member Ernest Fiona My family Ernest: Family member Fiona: Family member
Aircraft {abstract} Make Seats Engine type Start()  {abstract} land()  {abstract} Jet plane Make Seats Engine type Start() land() Helicopter Make Seats Engine type Start() land() Start jet engines Lower flaps & landing gear Start blades Decrease prop speed
Figure {abstract} Position: Pos Draw()  {abstract} Group Draw() Polygon Draw() Canvas Consists of * Electronic * Consists of Line Draw() Circle Draw() Consists of *
abstract public class Figure { abstract public void Draw(); Pos position; } public class Group extends Figure { private FigureVector consist_of;  public void Draw() { for (int i = 0; i < consist_of.size(), i++) { consist_of[i].draw(); } } } public class Polygon extends Figure { public void Draw() { /* something similar to group  only using lines instead */ } } public class Line extends Figure { public void Draw() { /* code to draw line */ } } public class circle extends Figure { public void Draw() { /* code to draw circle */ } }
[object Object],[object Object],[object Object]
Airport Flight Aircraft Passenger Turbo-prop aircraft Jet-turbine aircraft Uses uses /1 class passenger Fixed-wing passenger craft Is on Name Surname Age Nationality Destination Ticket price /1 class passenger Passenger {1 class passenger = = (Ticket price > 400)} N.B. Relation cardinality is omitted for example clarity /1 class passenger
Shop Order Customer Processes /bulk-buying customer Places Wholesaler Supplies /supermarket Name Address Owner Category Date of registration Area /Supermarket Shop {Supermarket = = (Area > 200 && Category = &quot;dept&quot;)} N.B. Relation cardinality is omitted for example clarity
Database Organisation Employee Entry in Member of {subset} Maintains N.B. Relation cardinality is omitted for example clarity Project manager of
 
 
 
 
+getOrderStatus +setOrderStatus +getLineItems +setLineItems +getCreditApproved +setCreditApproved ... OrderBean {abstract} LineItem {abstract} Product 1 * 1 * <<interface>> EntityBean CreditCard {abstract} Customer MyOrder MyLineItem MyCreditCard * 1 * buyer order order item item commodity
[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
 

Weitere ähnliche Inhalte

Was ist angesagt?

Laporan 1 penngantar program r
Laporan 1 penngantar program rLaporan 1 penngantar program r
Laporan 1 penngantar program rKhair Norrasid
 
Pelatihan Bahasa R
Pelatihan Bahasa RPelatihan Bahasa R
Pelatihan Bahasa Ranom0164
 
Tugas struktur data
Tugas struktur dataTugas struktur data
Tugas struktur dataDevandy Enda
 
Laporan praktikum modul vii
Laporan praktikum modul viiLaporan praktikum modul vii
Laporan praktikum modul viiDevi Apriansyah
 
Tugas modul fungsi
Tugas modul fungsiTugas modul fungsi
Tugas modul fungsiFajar Umam
 
Laporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOLaporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOsetyadi_s
 
Tipe data pada java
Tipe data pada javaTipe data pada java
Tipe data pada javarahmat s
 
Modul ix dan x algo
Modul ix dan x algoModul ix dan x algo
Modul ix dan x algoSTMIK AKAKOM
 
modul Java dasar fundamental (OOP)
modul Java dasar fundamental (OOP)modul Java dasar fundamental (OOP)
modul Java dasar fundamental (OOP)Reza Pramana
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Ekha Cahya Nugraha
 
Tugas blog
Tugas blog Tugas blog
Tugas blog ryass
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Melina Krisnawati
 
Pemograman berorientasi objek
Pemograman berorientasi objekPemograman berorientasi objek
Pemograman berorientasi objekAlvin Setiawan
 

Was ist angesagt? (20)

Laporan 1 penngantar program r
Laporan 1 penngantar program rLaporan 1 penngantar program r
Laporan 1 penngantar program r
 
Pelatihan Bahasa R
Pelatihan Bahasa RPelatihan Bahasa R
Pelatihan Bahasa R
 
Tipe data dan variabel
Tipe data dan variabelTipe data dan variabel
Tipe data dan variabel
 
Tugas struktur data
Tugas struktur dataTugas struktur data
Tugas struktur data
 
Laporan praktikum modul vii
Laporan praktikum modul viiLaporan praktikum modul vii
Laporan praktikum modul vii
 
Struktur data
Struktur dataStruktur data
Struktur data
 
Tugas modul fungsi
Tugas modul fungsiTugas modul fungsi
Tugas modul fungsi
 
Laporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOLaporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBO
 
Procedur
ProcedurProcedur
Procedur
 
pengantar array PHP
pengantar array PHPpengantar array PHP
pengantar array PHP
 
Tipe data pada java
Tipe data pada javaTipe data pada java
Tipe data pada java
 
Modul ix dan x algo
Modul ix dan x algoModul ix dan x algo
Modul ix dan x algo
 
Laporan
LaporanLaporan
Laporan
 
modul Java dasar fundamental (OOP)
modul Java dasar fundamental (OOP)modul Java dasar fundamental (OOP)
modul Java dasar fundamental (OOP)
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
 
Modul pd
Modul pdModul pd
Modul pd
 
Tugas blog
Tugas blog Tugas blog
Tugas blog
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
 
TD-635-06-PSBO
TD-635-06-PSBOTD-635-06-PSBO
TD-635-06-PSBO
 
Pemograman berorientasi objek
Pemograman berorientasi objekPemograman berorientasi objek
Pemograman berorientasi objek
 

Andere mochten auch

Wikiak
WikiakWikiak
Wikiakane87
 
Wikiak
WikiakWikiak
Wikiakane87
 
ELL Ireland Report: NELLIP Project
ELL Ireland Report: NELLIP ProjectELL Ireland Report: NELLIP Project
ELL Ireland Report: NELLIP ProjectAlan Bruce
 
Learning to See; Seeing to Learn - observational and evaluative skills in ini...
Learning to See; Seeing to Learn - observational and evaluative skills in ini...Learning to See; Seeing to Learn - observational and evaluative skills in ini...
Learning to See; Seeing to Learn - observational and evaluative skills in ini...Alan Bruce
 
Onde esta o busilis (revista espaco 1970)
Onde esta o busilis (revista espaco 1970)Onde esta o busilis (revista espaco 1970)
Onde esta o busilis (revista espaco 1970)ramiro quaresma
 
International Crisis - Global Opportunity: diversity, inclusion and best prac...
International Crisis - Global Opportunity: diversity, inclusion and best prac...International Crisis - Global Opportunity: diversity, inclusion and best prac...
International Crisis - Global Opportunity: diversity, inclusion and best prac...Alan Bruce
 

Andere mochten auch (9)

Wikiak
WikiakWikiak
Wikiak
 
Wikiak
WikiakWikiak
Wikiak
 
ELL Ireland Report: NELLIP Project
ELL Ireland Report: NELLIP ProjectELL Ireland Report: NELLIP Project
ELL Ireland Report: NELLIP Project
 
Lapdul Uji Coba Sistem
Lapdul Uji Coba SistemLapdul Uji Coba Sistem
Lapdul Uji Coba Sistem
 
Learning to See; Seeing to Learn - observational and evaluative skills in ini...
Learning to See; Seeing to Learn - observational and evaluative skills in ini...Learning to See; Seeing to Learn - observational and evaluative skills in ini...
Learning to See; Seeing to Learn - observational and evaluative skills in ini...
 
Heuristics
HeuristicsHeuristics
Heuristics
 
Encounters11
Encounters11Encounters11
Encounters11
 
Onde esta o busilis (revista espaco 1970)
Onde esta o busilis (revista espaco 1970)Onde esta o busilis (revista espaco 1970)
Onde esta o busilis (revista espaco 1970)
 
International Crisis - Global Opportunity: diversity, inclusion and best prac...
International Crisis - Global Opportunity: diversity, inclusion and best prac...International Crisis - Global Opportunity: diversity, inclusion and best prac...
International Crisis - Global Opportunity: diversity, inclusion and best prac...
 

Ähnlich wie Pemodelan Perangkat Lunak UML

Modul pratikum pbo - Class dan Object
Modul pratikum pbo - Class dan ObjectModul pratikum pbo - Class dan Object
Modul pratikum pbo - Class dan Objectrahmantoyuri
 
Modul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaModul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaRakhmat Dedi Gunawan
 
7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman strukturRoziq Bahtiar
 
Materi rsi 8 diagram rsi
Materi rsi 8 diagram rsiMateri rsi 8 diagram rsi
Materi rsi 8 diagram rsidonasiilmu
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
9a8439a95ac746c9ad9cbe7e3921bf93___Pertemuanke1tipedasar___27636.ppt
9a8439a95ac746c9ad9cbe7e3921bf93___Pertemuanke1tipedasar___27636.ppt9a8439a95ac746c9ad9cbe7e3921bf93___Pertemuanke1tipedasar___27636.ppt
9a8439a95ac746c9ad9cbe7e3921bf93___Pertemuanke1tipedasar___27636.pptAnisIka
 
Algoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur dataAlgoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur dataZombie Black
 
06 elemen form pada html
06   elemen form pada html06   elemen form pada html
06 elemen form pada htmlDeka M Wildan
 
pertemuan ke-4 (Variabel dan Konstanta).ppt
pertemuan ke-4 (Variabel dan Konstanta).pptpertemuan ke-4 (Variabel dan Konstanta).ppt
pertemuan ke-4 (Variabel dan Konstanta).pptnafilarifki1
 

Ähnlich wie Pemodelan Perangkat Lunak UML (20)

12655598.ppt
12655598.ppt12655598.ppt
12655598.ppt
 
Modul pratikum pbo - Class dan Object
Modul pratikum pbo - Class dan ObjectModul pratikum pbo - Class dan Object
Modul pratikum pbo - Class dan Object
 
Modul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & ObjekModul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & Objek
 
Modul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaModul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan Java
 
7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman struktur
 
Tistrukdat1
Tistrukdat1Tistrukdat1
Tistrukdat1
 
Laporan modul 5 basisdata
Laporan modul 5 basisdataLaporan modul 5 basisdata
Laporan modul 5 basisdata
 
Bab 9
Bab 9Bab 9
Bab 9
 
Materi rsi 8 diagram rsi
Materi rsi 8 diagram rsiMateri rsi 8 diagram rsi
Materi rsi 8 diagram rsi
 
Uml
UmlUml
Uml
 
Alex algoritma-02
Alex algoritma-02Alex algoritma-02
Alex algoritma-02
 
Algoritma Pemrograman 2
Algoritma Pemrograman 2Algoritma Pemrograman 2
Algoritma Pemrograman 2
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
9a8439a95ac746c9ad9cbe7e3921bf93___Pertemuanke1tipedasar___27636.ppt
9a8439a95ac746c9ad9cbe7e3921bf93___Pertemuanke1tipedasar___27636.ppt9a8439a95ac746c9ad9cbe7e3921bf93___Pertemuanke1tipedasar___27636.ppt
9a8439a95ac746c9ad9cbe7e3921bf93___Pertemuanke1tipedasar___27636.ppt
 
Laporan tugas struktur data
Laporan tugas struktur dataLaporan tugas struktur data
Laporan tugas struktur data
 
Uml
UmlUml
Uml
 
Algoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur dataAlgoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur data
 
06 elemen form pada html
06   elemen form pada html06   elemen form pada html
06 elemen form pada html
 
Laporan praktikum jawaban 10 algoritma(1)
Laporan praktikum jawaban 10 algoritma(1)Laporan praktikum jawaban 10 algoritma(1)
Laporan praktikum jawaban 10 algoritma(1)
 
pertemuan ke-4 (Variabel dan Konstanta).ppt
pertemuan ke-4 (Variabel dan Konstanta).pptpertemuan ke-4 (Variabel dan Konstanta).ppt
pertemuan ke-4 (Variabel dan Konstanta).ppt
 

Mehr von AMIK AL MA'SOEM

Mehr von AMIK AL MA'SOEM (7)

Fuzy model-bank-journal
Fuzy model-bank-journalFuzy model-bank-journal
Fuzy model-bank-journal
 
Modul kuliah Manajemen Proyek
Modul kuliah Manajemen ProyekModul kuliah Manajemen Proyek
Modul kuliah Manajemen Proyek
 
Back propagation
Back propagationBack propagation
Back propagation
 
Heuristic search-best-first-search
Heuristic search-best-first-searchHeuristic search-best-first-search
Heuristic search-best-first-search
 
Bahasa pemrograman-3
Bahasa pemrograman-3Bahasa pemrograman-3
Bahasa pemrograman-3
 
Overridung polymorphism
Overridung polymorphismOverridung polymorphism
Overridung polymorphism
 
Bahasa pemrograman-3
Bahasa pemrograman-3Bahasa pemrograman-3
Bahasa pemrograman-3
 

Pemodelan Perangkat Lunak UML

  • 2.
  • 3. Properti dari diagram kelas yaitu - Model statis : - Memodelkan struktur dan perilaku - Digunakan sebagai dasar dari diagram lainnya - Mudah untuk diubah ke dalam diagram obyek Nam a Attribut Opera si
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. Invoice + amount : real + date : date = current date + customer : string + specification : string - administrator : string = &quot;unspecified&quot; - number_of_invoices : integer + amount : real + date : date = current date + customer : string + specification : string - administrator : string = &quot;unspecified&quot; - number_of_invoices : integer + status : status = unpaid { unpaid, paid } UNIXaccount + username : string + groupname : string + filesystem_size : integer + creation_date : date - password : string UNIXaccount + username : string + groupname : string = “staff&quot; + filesystem_size : integer + creation_date : date - password : string Invoice
  • 9. Public class UNIXaccount { public string username; public string groupname = &quot;csai&quot;; public int filesystem_size; public date creation_date; private string password; static private integer no_of_accounts = 0 public UNIXaccount() { //Other initialisation no_of_accounts++; } //Methods go here }; UNIXaccount + username : string + groupname : string = “staff&quot; + filesystem_size : integer + creation_date : date - password : string - no_of_accounts : integer = 0
  • 10. Public class Figure { private int x = 0; private int y = 0; public void draw() { //Java code for drawing figure } }; Figure fig1 = new Figure(); Figure fig2 = new Figure(); fig1.draw(); fig2.draw(); Figure - x : integer = 0 - y : integer = 0 + draw()
  • 11.  
  • 12. Person Car Drives  * * Driver Company car Person Car * * Adult Company car Employee Drives  1 1 Driver Driver Person Person Married to  Husband Wife Domestic appliance Family member  · Turns on Heater ·  Cleans Toaster Dad  · Tunes Child Radio Mum
  • 13. Person Car * Plates User PID Process Host IP-addr * * Item of clothing Male person 0 ..* Female person 0 ..* {or} 1 1
  • 14. Library Books * 1 ..* {ordered by date} Member {ordered by surname} * 1 ..* Person Establishment Bank card Client 0 ..* No qualified or aggregation associations allowed in ternary. 1 ..* Credit card Shop 1 ..*
  • 15.  
  • 16. Host Printer 1 ..* Network Network adapter 1 * 1 Queue Adapter Print spooler Notary Client Contract Purchaser Real-estate Computer
  • 17.  
  • 18. Car Wheels Body Engine Wiring * * * * Note that association multiplicity is shown within the classes
  • 19.  
  • 20. Zoo Mammal Bird Falcon Monkey Giraffe 0..* 0..* 0..* Zoo Monkey[0..*]: Mammal Giraffe[0..*]: Mammal Human[1..*]: Mammal Falcon[0..*]: Bird Cage[1..*]: Equipment Equipment Human 1..* Cage 1..* My family Family member Ernest Fiona My family Ernest: Family member Fiona: Family member
  • 21. Aircraft {abstract} Make Seats Engine type Start() {abstract} land() {abstract} Jet plane Make Seats Engine type Start() land() Helicopter Make Seats Engine type Start() land() Start jet engines Lower flaps & landing gear Start blades Decrease prop speed
  • 22. Figure {abstract} Position: Pos Draw() {abstract} Group Draw() Polygon Draw() Canvas Consists of * Electronic * Consists of Line Draw() Circle Draw() Consists of *
  • 23. abstract public class Figure { abstract public void Draw(); Pos position; } public class Group extends Figure { private FigureVector consist_of; public void Draw() { for (int i = 0; i < consist_of.size(), i++) { consist_of[i].draw(); } } } public class Polygon extends Figure { public void Draw() { /* something similar to group only using lines instead */ } } public class Line extends Figure { public void Draw() { /* code to draw line */ } } public class circle extends Figure { public void Draw() { /* code to draw circle */ } }
  • 24.
  • 25. Airport Flight Aircraft Passenger Turbo-prop aircraft Jet-turbine aircraft Uses uses /1 class passenger Fixed-wing passenger craft Is on Name Surname Age Nationality Destination Ticket price /1 class passenger Passenger {1 class passenger = = (Ticket price > 400)} N.B. Relation cardinality is omitted for example clarity /1 class passenger
  • 26. Shop Order Customer Processes /bulk-buying customer Places Wholesaler Supplies /supermarket Name Address Owner Category Date of registration Area /Supermarket Shop {Supermarket = = (Area > 200 && Category = &quot;dept&quot;)} N.B. Relation cardinality is omitted for example clarity
  • 27. Database Organisation Employee Entry in Member of {subset} Maintains N.B. Relation cardinality is omitted for example clarity Project manager of
  • 28.  
  • 29.  
  • 30.  
  • 31.  
  • 32. +getOrderStatus +setOrderStatus +getLineItems +setLineItems +getCreditApproved +setCreditApproved ... OrderBean {abstract} LineItem {abstract} Product 1 * 1 * <<interface>> EntityBean CreditCard {abstract} Customer MyOrder MyLineItem MyCreditCard * 1 * buyer order order item item commodity
  • 33.
  • 34.
  • 35.
  • 36.  

Hinweis der Redaktion

  1. An association is a structural relationship that specifies that objects of one thing are connected to objects of another. Given an association connecting two classes, you can navigate from an object of one class to an object of the other class, and vice versa
  2. A qualified association is an association which allows us to restrict the objects referred in an association thanks to a key. A derived association is an association made starting from another association. An association with class is an association itself managed by a class, which can thus provide attributes or operations specific for association.
  3. A derived association is an association made starting from another association.
  4. Association classes allow you to add attributes, operations, and other features to associations We can see from the diagram that a Person may work for a single Company. We need to keep information about the period of time that each employee works for each Company. We can do this by adding a dateRange attribute to the association. We could add this attribute to the Person class, but it is really a fact about a Person&apos;s relationship to a Company, which will change should the person&apos;s employer change.