Forum: Fråga ang. objekthantering(?)

Forum huvudsida -> Programmering -> Fråga ang. objekthantering(?)

Sidor: 1

Till botten

InDigo176 17:03 - 12:a November 2007 | Post #1
Medlem
Inlägg: 72


Skicka PM
Hallå! Jag tänkte ställa en liten fråga som jag undrat över ett tag. Det är så att jag har läst lite Java-exempel och stött på den här kodsnutten:
  1. ...
  2.  
  3. protected double x;
  4.  
  5. protected double y;
  6.  
  7. protected double dx;
  8.  
  9. protected double dy;
  10.  
  11. ...
  12.  
  13. public void setHorizontalMovement(double dx) {
  14. this.dx = dx;
  15. }
  16.  
  17. public void setVerticalMovement(double dy) {
  18. this.dy = dy;
  19. }
  20.  
  21. public double getHorizontalMovement() {
  22. return dx;
  23. }
  24.  
  25. public double getVerticalMovement() {
  26. return dy;
  27. }
  28.  
  29. ...

Då undrar jag varför skaparen av denna kod använt sig av funktioner för att man ska kunna kontrollera variablerna istället för att göra variablerna publika. Finns det någon förklaring till det? Brukar man göra såhär?

Tack på förhand!

-------------------------
Sebban



Independence 17:17 - 12:a November 2007 | Post #2
Administratör
Inlägg: 1800


Skicka PM
Det anses väl som bra programmering enligt klassisk OO har jag för mig. Man brukar nämna saker som att man kan byta namn på variablerna utan att det märks för folk som bygger kod mot din klass, att du kan bygga in kontroller så att vettiga värden sparas i variablerna så att du säkert vet att ingen utomstående stoppar i saker som kommer göra att koden inte fungerar som den ska och lite sånt. Man brukar prata om att man bygger "svarta lådor", man gömmer de interna bitarna i klasserna och visar bara en del funktioner för att anropa olika funktioner. Varje klass sköter sin bit utan att blanda sig i andra klasser, och på så sätt kan man lätt byta ut klasser eller programmera olika klasser parallellt.
I mindre projekt eller där man bara är en person som utvecklar en kort stud kanske man inte ser några fördelar med en gång, men det är säkert god vana att göra så.

-------------------------

Vi är riddarna som säger fiskbulle!





InDigo176 17:19 - 12:a November 2007 | Post #3
Medlem
Inlägg: 72


Skicka PM
Ok, då vet jag. Tack för svaret!Smiley

-------------------------
Sebban



FunkyChicken 21:30 - 12:a November 2007 | Post #4
Nyhetsredaktör
Inlägg: 800


Skicka PM
Jag hade en lång och itensiv diskussion med min föreläsare i java om detta. Han hävdade (på goda grudner) att det är god java-praxis att aldrig ha publika variabler, och jag hävdade på på minst lika goda grunder (tyckte jag alltså) att koden blir helt horribelt äcklig om man måste använda funktionsanrop för att komma åt variabler som klassen ändå aldrig ändrar på.

Det stora felet ligger förstås i designen av java. I C# VB.NET etc kan man ju göra properties vilket IMHO är J,,TTEBRA.

Det slutade fö med att vi enades om att publika variabler är att föredra i vissa fall och att jag fick skriva som jag ville, men det är nog ändå inte rekommenderat då det strider mot "standarden". Nu när vi läser MATLAB har lärarna inte ens velat avslöja att man kan göra globala variabler...




Slash 22:17 - 12:a November 2007 | Post #5
Medlem
Inlägg: 141


Skicka PM
Att ge ett solitt och konsekvent klassgränssnitt är, tycker jag, väldigt viktigt och det ger inte publika variabler. Får man så mycket get/set-metoder att man tycker det blir en börda kan det vara idé att se över sin design.

De gånger jag tycker det kan vara befogat att ha publika variabler är i en privat inre klass, då det inte påverkar klassens gränssnitt mot resten av programmet. ,,ven för väldigt enkla klasser (t ex. Point då det enda vettiga är en x- och en y-medlem) skulle jag kunna ha överseende med det.

Må väl

-------------------------
Ingen sigantur!



Sidor: 1

Forum huvudsida -> Programmering -> Fråga ang. objekthantering(?)
Atom feed

Du får inte posta i den här tråden | Till toppen