Kohesion och koppling (Vilket påstående stämmer in på de givna klasserna)
Uppgift:
Vilket påstående om klasserna nedan stämmer bäst?
public class Person {
private String name;
private ContactInfo contact;
...
}
public class ContactInfo {
private String address;
private String phone;
private String email;
private List<Person> friends;
...
public int getNoOfFriends() { ... }
public Person getFriend(int i) { ... }
...
}
a. Klasserna har hög kohesion och kopplingen mellan klasserna är hög.
b. Klasserna har låg kohesion och kopplingen mellan klasserna är låg.
c. Klasserna har hög kohesion och kopplingen mellan klasserna är låg.
d. Klasserna har låg kohesion och kopplingen mellan klasserna är hög.
Ett par saker som jag reagerar på när jag ser dessa klasser:
Person:
- innehåller referensen 'contact' av typ ContactInfo
ContactList:
-innehåller en lista av 'Person'. Kan man inte säga att ContactList delar denna datastruktur med Person-klassen?
- metoden getFriend har returtyp 'Person'
Enligt observationerna ovan så tror jag att klasserna har låg kohesion eftersom klasserna inte är självständiga, och hög koppling för att dom delar på en datastruktur med varandra (en lista av Person-objekt)? Visserligen är instanserna hos ContactInfo privata, men listan med vänner går väl att komma åt med metoden ‘getFriend’?
Klasserna Person och ContactInfo beror av varandra. Kopplingen är hög.
Klassen ContactInfo innehåller friends med tillhörande metoder som inte har med klassen att göra och strider mot Single Responsibility Principle. Kohesionen är låg.
Det vore bättre om friends med tillhörande metoder flyttades till klassen Person.
Lindehaven skrev:Klasserna Person och ContactInfo beror av varandra. Kopplingen är hög.
Klassen ContactInfo innehåller friends med tillhörande metoder som inte har med klassen att göra och strider mot Single Responsibility Principle. Kohesionen är låg.
Det vore bättre om friends med tillhörande metoder flyttades till klassen Person.
Tackar :)