Najjednostavnije rečeno; klasa je struktura podataka koja omogućava da svojstva i metode posmatramo kao zaseban objekat. Klasa je način da se napravi tip podataka koji ima i stanje i ponašanje. U principu to je samo kolekcija promenjivih različitih tipova koji su kombinovani sa skupom povezanih funkcija. Prva stvar koju trebate shvatiti prilikom učenja klasa su mnoštvo novih programerskih pojmova, ključni reči na engleskom jeziku koje često i kad se prevedu, ostavljaju početnike zbunjenim. Iskusan programer može satima pričati o klasama dok ga početnici slušaju i pitaju se o čemu ovaj priča. Zato je neophodno da razumete svaki pojam kad ga koristite inače vi možete praktično praviti klase da čak i ne razumete kad nešto u klasi treba da koristite a kad ne. Zato vam savetujem bez žurbe i mnogo google-anja i praktični rešenja sa stalnim samoispitivanjem ( Zašto baš onako kad može i ovako? ); dok ne shvatite. Klase se ne mogu objasniti jednim postom, zato ću ovu temu opisati u više postova. Klase su najznačajnije obilježje C++ programskog jezika, one vas uvode u objektno orijentisanje podataka s mnoštvom mogućnosti što podrazumeva i više odluka i odgovornosti. U C programskom jeziku nemate klase; zato se mnogo koriste strukture, dok u C# programskom jeziku rad sa klasama je mnogo jednostavniji i drugačiji zahvaljujući .Net Framework-u. U C++ programskom jeziku rad sa klasama je nešto komplikovaniji.
( Definicija klase u C++ programskom jeziku )
U klasičnom programiranju, kod i podaci su odvojeni. OOP – Objektno orjentisano programiranje taj odnos menja i omogućava vam da pakujete i podatke i kod zajedno u nešto što zovemo klasa. Klasa omogućava da zamotate različite promenjive i funkcije u kolekciju i to zovemo objekat. Ali sam postupak svega toga zovemo enkapsuliranje. Znači da enkapsuliranje shvatite kao zamotavanje. Prednost enkapsuliranja je u tome što npr. sve karakteristike i ponašanje kućnih ljubimaca stavite u jednu klasu i nazovete je životinja. Kad vam trebaju karakteristike kućnog ljubimca dovoljno je da pozovete klasu životinja u svom programu. Ali nije sve samo na tome. Mnoštvo je mogućnosti šta vi sve možete da radite sa vašom klasom i do koje mere možete da utičete kako će se tipovi podataka i funkcije ponašati, čak i druge klase uključene u vašu klasu. Klasa se pravi prvo deklarisanjem i ovo je opšta sintaksa za C++ ključnu reč class:
class ime_klase {
class ime_klase {
deklaracije
};
};
Obratite pažnju da blok klase obavezno mora da se završi sa „ ; “, ukoliko pišete vašu klasu u isti fajl gde pišete i program. Klasu ne možete pisati u funkciji main() kao ni funkcije, nego klase se često pišu iznad deklaracije main() dok se funkcije pišu ispod. Klase uvek počinju deklaracijom kao što su deklaracija promenjivih, deklaracija funkcija ili i jednog i drugog što imate u klasi. Uglavnom dok učite klase i često u malim programima; klase se pišu u istom fajlu vašeg programa, međutim u projektima tako nešto je neprihvatljivo. Klase se u projektima pišu u odvojenim fajlovima gde se deklaracija klase upisuje u header fajl dok se ostali kod piše u fajlu klase, i onda se inicijalizuje pozivaju preko header fajla.
Kako da napišem jednostavnu malu klasu i pokrenem je u svom programu?
Kako da napišem jednostavnu malu klasu i pokrenem je u svom programu?
Da bi vam bilo što jasnije zamislite da pravite klasu koja treba da vam olakša pravljenje liste kućnih ljubimaca i njihovih osnovnih karakteristika. Vi bi ste mogli za to rešenje da koristite mnoge promenjive ili strukturu. Međutim, vi želite veće mogućnosti i bolju kontrolu nad kućnim ljubimcima. Zato pravite klasu. Recimo da želite da vaša klasa ima karakteristike tipa kućnog ljubimca poput imena, pola, godine, težine i broja nogu kućnog ljubimca. Posle vi možete proširiti klasu mnogobrojnim svojstvima i metodama poput; da li kućni ljubimac može da puže, hoda, trči ili leti i sve što vam padne na pamet da neka životinja ima ili može. U igricama bi ste upravu takvu klasu koristili za crtanje i pomeranje vaših životinja. Dakle, prvo navedemo ime naše klase i ispišemo deklaracije svih naših promenjivih i funkcija:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Animal
{
private:
bool m_gender = true;
public:
string name;
string species;
string gender = Gender(m_gender);
unsigned short age;
unsigned int weight;
unsigned short legs;
string Gender(bool m_gender)
{
if (m_gender)
{
return "Male";
}
else
{
return "Female";
}
}
};
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Animal
{
private:
bool m_gender = true;
public:
string name;
string species;
string gender = Gender(m_gender);
unsigned short age;
unsigned int weight;
unsigned short legs;
string Gender(bool m_gender)
{
if (m_gender)
{
return "Male";
}
else
{
return "Female";
}
}
};
int main()
{
Animal myanimal1, myanimal2;
void Printing(Animal animal);
myanimal1.name = "Leo";
myanimal1.species = "Dog";
myanimal1.age = 3;
myanimal1.Gender(true);
myanimal1.weight = 15;
myanimal1.legs = 4;
myanimal2.name = "Katty";
myanimal2.species = "Cat";
myanimal2.age = 5;
myanimal2.Gender(false);
myanimal2.weight = 8;
myanimal2.legs = 4;
Printing(myanimal1);
Printing(myanimal2);
system("PAUSE");
return 0;
}
void Printing(Animal animal)
{
cout << "Name:" << animal.name << endl;
cout << "Species: " << animal.species << endl;
cout << "Age: " << animal.age << " years." << endl;
cout << "Gender: " << animal.gender << endl;
cout << "Weight: " << animal.weight << " kg." << endl;
cout << "Number of Legs: " << animal.legs << " legs." << endl << endl;
}
Name:Leo
Species: Dog
Age: 3 years.
Gender: Male
Weight: 15 kg.
Number of Legs: 4 legs.
Name:Katty
Species: Cat
Age: 5 years.
Gender: Male
Weight: 8 kg.
Number of Legs: 4 legs.
Press any key to continue . . .
Kako to sve izgleda možete pogledati i na video-u:
( C++ Tutorial - 9. Classes ( Part I ) )
Nastaviće se . . .
No comments:
Post a Comment