Razlika između verzija stranice "Klasa (programiranje)"

S Wikipedije, slobodne enciklopedije
[pregledana izmjena][pregledana izmjena]
Uklonjeni sadržaj Dodani sadržaj
m Munja premjestio je stranicu Računarska klasa na Klasa (programiranje)
No edit summary
Red 1: Red 1:
{{Nedostaju izvori}}
{{Nedostaju izvori}}
U [[Objektno orijentirano programiranje|objektno orijentiranom programiranju]], '''klasa''' je prošitiv šablon programskog koda za kreiranje [[Objekt (računarstvo)|objekata]], nudeći početne vrijednosti za članske varijable i implementacije ponašanja (članske funkcije ili metode).{{sfn|Gamma|Helm|Johnson|Vlissides|1995|p=14}}{{sfn|Bruce|2002|loc=2.1 Objects, classes, and object types, {{Google books|9NGWq3K1RwUC|Objects, classes, and object types|page=18|plainurl=yes}}}} U više programskih jezika, ime klase se koristi kao naziv imena za klasu (sam šablon), kao ime za zadani konstruktor klase (subrutina koja kreira objekte) te kao podatkovni tip objekata generisan instanciranjem klase; ovi različiti koncepti se lahko brkaju.{{sfn|Bruce|2002|loc=2.1 Objects, classes, and object types, {{Google books|9NGWq3K1RwUC|Objects, classes, and object types|page=18|plainurl=yes}}}}
'''Klasa''' (na [[engleski jezik|engleskom]], ''class'') je struktura podataka u [[objektno orijentirano programiranje|objektno-orijentiranim]] [[programski jezik|programskim jezicima]] ([[C++]], [[Visual Basic]], [[C šarp|C#]], [[Java programski jezik|Java]]...) što nam omogućava da podatke (''atribute'') i operacije (''[[računarska metoda|metode]]'') posmatramo kao jedan [[objekat (računari)|objekat]] čije su osobine upravo opisane u tim atributima, a kojima pristupamo pomoću operacija/metoda.


Kada se kreira objekt preko konstruktora klase, rezultirajući objekt se naziva instanca klase, a članske varijable specifične objektu zovu se varijable instance, za razliku od klasnih varijabli koje se dijele kroz klasu.
Primjer ([[C++]] klasa):


U nekim jezicima, klase su samo karakteristika u toku vremena kompajliranja (nove klase ne mogu biti deklarisane pokretanjem programa), dok su klase u drugih programskih jezika "građani prve klase" i same po sebi generalno objekti. U ovih jezika, klasa koja kreira klase naziva se metaklasa.
<pre>
class Auto
{
private:
int mBrojVrata;
int mBrojSjedista;
//...
public:
int vratiBrojVrata();
void odrediBrojVrata(int);
}
</pre>


== Klasa vs. tip ==
Riječ '''private''' u ovom slučaju kazuje da atributima mozemo pristupati samo metodama koje su definisane unutar klase Auto. Riječ '''public''' omogućava da se atributima i/ili metodama pristupa javno. U [[Informatika|računarstvu]] ovo se zove [[zatvorenost]].
U uobičajenoj upotrebi, ljudi često misle na "klasu" objekta, ali preciznije govoreći objekti imaju ''tip'': interfejs, odnosno tipovi članskih varijabli, potpisi članskih funckija (metoda) i svojstva koja zadovoljavaju. Istovremeno, klasa ima implementaciju (specifično implementaciju metoda) i može kreirati objekte datog tipa, sa datom implementacijom.{{sfn|Gamma|Helm|Johnson|Vlissides|1995|p=17}} U smilsu teorije tipova, klasa je implementacija ''konkretne'' podatkovne strukture i kolekcije subrutina{{mdashb}}pri čemu je tip interfejs. Različite (konkretne) klase mogu proizvesti objekte istog (apstraktnog) tipa (zavisno od sistema tipa); naprimjer, tip {{Mono|Stack}} može biti implementiran sa dvije klase{{snd}} {{Mono|SmallStack}} (brzo za male stogove, ali se loše skalira) i {{Mono|ScalableStack}} (skalira se dobro ali je previše za mali stog). Slično, data klasa može imati nekoliko različitih konstruktora.


Tipovi klasa generalno predstavlja imenice, kao što je osoba, mjesto ili stvar, ili nešto u nominativu, a klasa predstavlja implementaciju ovih. Naprimjer, tip {{Mono|Banana}} može predstavljati svojstva i funkcionalnost [[banana]] općenito, dok klase {{Mono|ABCBanana}} i {{Mono|XYZBanana}} mogu predstavljati načine proizvodnje banana (npr. dobavljači banana ili podatkovne strukture i funkcije za crtanje banana u video igri). Klasa {{Mono|ABCBanana}} može tada proizvesti zasebne banane: instance klase {{Mono|ABCBanana}} će biti objekti tipa {{Mono|Banana}}. Često je samo jedna implementacija tipa data, u kojem slučaju ime klase je često identično sa nazivom tipa.
Primjer:


== Također pogledajte ==
<pre>
* [[Objektno orijentirano programiranje]]
#include <iostream>
#include "Auto.h" // pretpostavimo da je nasa klasa definisana u datoteci Auto.h


== Reference ==
using namespace std;
{{reflist}}

int main()
{
Auto auto1 = new Auto();

auto1.odrediBrojVrata(5);
// pošto su atributi privatni, ne možemo im pristupati direktno
// auto1.mBrojVrata = 5;

return 0;
}
</pre>

=== C++ Pristup ===
Slovo '''m''' ispred svakog atributa bi značilo da se radi o članu (''member'') klase. Naravno ovo nije strogo propisano. Klase su obično deklarisane u .h (''header'') datotekama, a njihovu implementaciju pišemo u istoimene datoteke sa ekstenzijom .cpp. Pa ako se header datoteka zove Auto.h, onda bi implementaciju naše klase pisali u Auto.cpp datoteku.

== Također pogledajte ==
* [[Objektno orijentisano programiranje]]


[[Kategorija:Programiranje]]
[[Kategorija:Programiranje]]

Verzija na dan 7 mart 2021 u 20:47

U objektno orijentiranom programiranju, klasa je prošitiv šablon programskog koda za kreiranje objekata, nudeći početne vrijednosti za članske varijable i implementacije ponašanja (članske funkcije ili metode).[1][2] U više programskih jezika, ime klase se koristi kao naziv imena za klasu (sam šablon), kao ime za zadani konstruktor klase (subrutina koja kreira objekte) te kao podatkovni tip objekata generisan instanciranjem klase; ovi različiti koncepti se lahko brkaju.[2]

Kada se kreira objekt preko konstruktora klase, rezultirajući objekt se naziva instanca klase, a članske varijable specifične objektu zovu se varijable instance, za razliku od klasnih varijabli koje se dijele kroz klasu.

U nekim jezicima, klase su samo karakteristika u toku vremena kompajliranja (nove klase ne mogu biti deklarisane pokretanjem programa), dok su klase u drugih programskih jezika "građani prve klase" i same po sebi generalno objekti. U ovih jezika, klasa koja kreira klase naziva se metaklasa.

Klasa vs. tip

U uobičajenoj upotrebi, ljudi često misle na "klasu" objekta, ali preciznije govoreći objekti imaju tip: interfejs, odnosno tipovi članskih varijabli, potpisi članskih funckija (metoda) i svojstva koja zadovoljavaju. Istovremeno, klasa ima implementaciju (specifično implementaciju metoda) i može kreirati objekte datog tipa, sa datom implementacijom.[3] U smilsu teorije tipova, klasa je implementacija konkretne podatkovne strukture i kolekcije subrutina—​pri čemu je tip interfejs. Različite (konkretne) klase mogu proizvesti objekte istog (apstraktnog) tipa (zavisno od sistema tipa); naprimjer, tip Stack može biti implementiran sa dvije klase – SmallStack (brzo za male stogove, ali se loše skalira) i ScalableStack (skalira se dobro ali je previše za mali stog). Slično, data klasa može imati nekoliko različitih konstruktora.

Tipovi klasa generalno predstavlja imenice, kao što je osoba, mjesto ili stvar, ili nešto u nominativu, a klasa predstavlja implementaciju ovih. Naprimjer, tip Banana može predstavljati svojstva i funkcionalnost banana općenito, dok klase ABCBanana i XYZBanana mogu predstavljati načine proizvodnje banana (npr. dobavljači banana ili podatkovne strukture i funkcije za crtanje banana u video igri). Klasa ABCBanana može tada proizvesti zasebne banane: instance klase ABCBanana će biti objekti tipa Banana. Često je samo jedna implementacija tipa data, u kojem slučaju ime klase je često identično sa nazivom tipa.

Također pogledajte

Reference

  1. ^ Gamma et al. 1995, str. 14.
  2. ^ a b Bruce 2002, 2.1 Objects, classes, and object types, https://books.google.com/books?id=9NGWq3K1RwUC&pg=PA18.
  3. ^ Gamma et al. 1995, str. 17.