Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Merk at vi kan velge andre navn og typer til attributtet som brukes til å lagre verdien, for å gjøre det mer praktisk å bruke verdien internt i klassen. F.eks. kan vi ha to attributter for lagre e-post-adresser, ett for brukernavnet og ett for domenet/tjenesten, selv om vi har valgt å kapsle dem inn e-post-verdien med operasjonene String getEmail() og void setEmail(String). Dette kan gjøre koden internt i klassen enklere, selv om det kan gjøre implementasjon av operasjonene litt mer komplisert. Implementasjonen kan være som vist under:

 

PlantUML Macro
titleImplementasjon av navn, fødselsdato og e-post
class Person {
	-String name
	-Date dateOfBirth
	-String emailUser
	-String emailDomain


	+String getFullName()
	+void setFullName(String)
	+Date getDateOfBirth()
	+void setDateOfBirth(Date)
	+String getEmail()
	+void setEmail(String)
}

Håndtering av attributter for enkeltverdier er nokså enkelt, men når ett attributt tilsvarer mange verdier, f.eks. barna til en person, så blir det mer komplisert, kanskje mest fordi det er flere valg å ta omkring både innkapslingsmetoder og implementasjon av attributtene. Ta som eksempel håndtering av barna til en person. Siden en kan ha flere av dem, så kan en ikke innkapsle dem med Person getChild() og setChild(Person). En variant er å bruke tabeller, altså Person[] getChildren() og void setChildren(Person[]), men det vil gjøre enkle operasjoner som å legge til barn mer komplisert å kode for de som bruker Person-klassen. Derfor er det bedre å velge en innkapsling som er mer skreddersydd for bruken av dataene.