„Klasi (forritun)“: Munur á milli breytinga
Efni eytt Efni bætt við
Lína 1:
'''Klasi'''<ref name="tos">[http://tos.sky.is/tos/to/word/isl/2941/ '''klasi''' ''kk.'']</ref> er eining í [[Hlutbundin forritun|hlutbundinni]] [[forritun]] sem gegnir hlutverki sniðmáts.<ref name="tos"/> Klasi ákveðins [[Hlutur (tölvunarfræði)|hlutar]] lýsir eiginleikum og aðgerðum [[Tilvik (tölvunarfræði)|tilviks]] hans.<ref name="tos"/> Taka má sem dæmi klasann <tt>Bíll</tt> sem hefði að geyma upplýsingar um lit og gerð bílsins sem og fjölda hurða og dekkja. Þegar klasinn er í hendi er má búa til mörg tilvik af honum með mismunandi eiginleika, tilvik af grænum bíl með 4 hurðir og 15 dekk eða rautt tilvik 2 hurðir og 4.
== Ástæður ==
Klasar brjóta [[forrit]] niður svo auðveldara sé að vinna með þau. Meginreglan er að skipta forritinu niður í einingar sem eru hannaðar á þann veg að breyting í einum klasa hafi sem minnst áhrif á aðra hluti forritsins til þess að auðvelda okkur smíði stórra kerfa. Hentugast er að reyna að gera almenna klasa sem hægt er að endurnýta þegar sömu virkni vantar í önnur verkefni. Til þess að ekki þurfi að skrifa klasa sem er þegar til, og einnig til að nýta klasa sem búið er að prófa út í gegn og vitað að virkar mjög vel.▼
=== Klasaskil ===▼
Klasi getur til dæmis séð um tengingu við [[gagnagrunnur|gagnagrunn]]. Þá nota aðrir klasar hann til að hafa samskipti við gagnagrunninn. Klasar geta haft samskipti sín á milli beint eða í gegnum [[skil]]. Skil eru notuð sem skilgreiningarhluti á klasa til að auðvelda samskipti milli forritunareininga innan forrits.▼
== Dæmi ==
Dæmi í [[Java (forritunarmál)|Java]]: Klasinn <code>Maður</code> og klasinn <code>KarlMaður</code> sem erfir klasann <code>Maður</code>. Það þýðir að kall í klasann <code>KarlMaður</code> getur nýtt aðferðir sem eru skilgreindar í klasanum <code>Maður</code>:▼
▲Hentugast er að reyna að gera almenna klasa sem hægt er að endurnýta þegar sömu virkni vantar í önnur verkefni. Til þess að ekki þurfi að skrifa klasa sem er þegar til, og einnig til að nýta klasa sem búið er að prófa út í gegn og vitað að virkar mjög vel.
<source lang="java">
▲== Klasaskil ==
▲Klasi getur til dæmis séð um tengingu við [[gagnagrunnur|gagnagrunn]]. Þá nota aðrir klasar hann til að hafa samskipti við gagnagrunninn. Klasar geta haft samskipti sín á milli beint eða í gegnum [[skil]]. Skil eru notuð sem skilgreiningarhluti á klasa til að auðvelda samskipti milli forritunareininga innan forrits.
}
▲Dæmi í [[Java (forritunarmál)|Java]]: Klasinn <code>Maður</code> og klasinn <code>KarlMaður</code> sem erfir klasann <code>Maður</code>. Það þýðir að kall í klasann <code>KarlMaður</code> getur nýtt aðferðir sem eru skilgreindar í klasanum <code>Maður</code>:
public void LataVaxaSkegg() {▼
//Aðferð til að láta skegg vaxa▼
}▼
}
▲ public class Maður {
▲ public void VeifaHöndum(){
▲ //aðferð til að veifa höndum
▲ }
▲ public class KarlMaður extends Maður{ //extends er skipunin í java sem segir ''erfir''
▲ public void LataVaxaSkegg() {
▲ //Aðferð til að láta skegg vaxa
▲ }
▲ public static void main(string Args[]) {
KarlMaður karlMaður = new KarlMaður();
karlMadur.VeifaHöndum();
karlMaður.LataVaxaSkegg();
</
Klasinn sem erfir getur framkvæmt aðgerðir og notað breytur sem eru í erfðum klasa sem eru skilgreindar sem public eða protected en ekki ef skilgreiningin private er notuð. Í dæminu að ofan ef aðgerðin VeifaHöndum() væri skilgreind svona: private void VeifaHöldum() þá hefði klasinn KarlMaður ekki aðgang að aðgerðinni og forritsstubburinn að ofan væri ólöglegur.
Á sama hátt er hægt að láta skil erfa skil en skil geta ekki erft klasa og klasi getur ekki erft skil.
Dæmi um klasa í [[Python]]:
<source lang="python">
class Maður:
"Manneskja með sál og hjarta."
def __init__(sjálf, nafn, aldur):
sjálf.nafn = nafn.capitalize()
sjálf.aldur = aldur
def kynning(sjálf):
print("Komið sæl, ég heiti {0} og er {1} ára.".format(sjálf.nafn, sjálf.aldur))
Anna = Maður("anna", 26)
print("Nafn:", Anna.nafn) # Prentar „Aldur: 26“
print("Aldur:", Anna.aldur) # Prentar „Nafn: Anna“
Anna.kynning() # Prentar „Komið sæl, ég heiti Anna og er 26 ára.“
</source>
== Private, protected, og public ==
Lína 51 ⟶ 65:
Þegar skilgreindur er '''hlutrænn klasi''' þá vita þeir klasar sem að erfa hann ekki hvernig hann útfærir hlutrænu föllin.
Hérna er eitt dæmi í [[C++]], klasi sem við köllum <
<source lang="cpp">
using System;
public class Hello
Lína 74 ⟶ 89:
}
}
</
== Sjá einnig ==
* [[Erfðir (forritun)|Erfðir]]
* [[Grunnklasasafn]]
* [[Smiður (tölvunarfræði)|Smiður]]
== Heimildir ==
* {{wpheimild | tungumál = en | titill = Class (computer_science) | mánuðurskoðað = 13. mars | árskoðað = 2007}}
== Tilvísanir ==
<references/>
[[Flokkur:Forritun]]
|