2 svar
278 visningar
TB16 behöver inte mer hjälp
TB16 182 – Fd. Medlem
Postad: 28 aug 2018 12:25

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’?

Lindehaven 820 – Lärare
Postad: 28 aug 2018 19:48

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.

TB16 182 – Fd. Medlem
Postad: 8 sep 2018 11:10
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 :)

Svara
Close