OOPS Grundpelare



OOPS Grundpelare

0 0


gettersandsetters


On Github andrewgalb / gettersandsetters

Getters och Setters

OOPS Grundpelare

  • Klass
  • Inkapsling
  • Arv
  • Polymorfism

Klass

  • Programmet byggs upp av delar, klasser
  • Varje klass innehåller både information och funktionalitet.
  • Programmet kan ses som en uppsättning samverkande och interagerande objekt

Inkapsling

  • Dagens ämne!

Arv

  • En underklass ärver egenskaper och funktionalitet av den överklass den tillhör.
  • T.ex ett programsystem inom bankvärlden kan hantera det allmänna begreppet/klassen konto, men även specialfall som inlåningskonto, lönekonto, konto med kreditmöjlighet o.s.v.

Polymorfism

  • I en grupp av underklasser finns funktionalitet som har yttre likheter mellan klasserna, men som måste programmeras på olika sätt beroende på vilken av underklasserna det gäller.
  • Gränssnittet blir gemensamt för alla underklasserna, och definieras i överklassen, men den verkställande programkoden finns i respektive underklass.

Inkapsling

  • Ett objekts exakta beteende och funktion är dold för omvärlden.
  • Varje klass är en abstraktion och visar ett gränssnitt mot omvärlden som specificerar hur andra klasser får interagera med den.
  • Detta garanterar att alla förändringar av ett objekt sker genom programkod som tillhör objektets klass.
  • Ett visst objekt kan inte påverka ett annat objekt på annat sätt än genom detta objekts gränssnitt.

Inkapsling

  • Ett steg i inkapsling är att se till att alla datamedlemmar är privata
  • Men hur ska vi då göra för att ändra deras värden?
class Robot
{
	private int noLegs;
	private double energy;
}
					

Inkapsling

  • En lösning hade varit att skriva en konstruktor som är public - men detta körs endast när objektet skapas.
  • Hur gör man om man vill ändra värden på datamedlemmerna efter objekt har skapats?
class Robot
{
	private int noLegs;
	private double energy;

	public Robot(int noLegs, double energy)
	{
		this.noLegs = noLegs;
		this.energy = energy;
	}
}

					

Inkapsling

  • Svaret är s.k. getters och setters
  • Vi använder getters för att returnerar de olika datamedlemmarna
  • Vi använder setters för att ändra på datamedlemmarnas värden.

Getters och Setters

class Robot
{
	private int noLegs;
	private double energy;

	//Detta är en getter för noLegs
	public int getNoLegs()
	{
		return noLegs;
	}

	//Och detta är en setter för noLegs
	public void setNoLegs(int noLegs)
	{
		this.noLegs = noLegs;
	}
}
					

Getters och Setters

  • Vår getters och setters betyder att VI bestämmer vem och på vilket sätt andra får tillgång till objektets datamedlemmar.
Getters och Setters