Showing posts with label klase. Show all posts
Showing posts with label klase. Show all posts

Wednesday, February 10, 2016

Apstraktne klase u C# programskom jeziku



Svaka klasa koja sadrži ključnu reč abstract i koja ima najmanje jednu apstraktnu metodu se naziva apstraktna klasa. Apstraktna metoda je metoda koja sadrži ključnu reč abstract i koja nema ni telo ni implementaciju. Apstraktna klasa ne može da se instancira dok svaka njena apstraktna metoda mora da bude nadjačana u svakoj ne apstraktnoj klasi koja nasleđuje apstraktnu klasu. To jednostavno znači da apstraktnu klasu i njene apstraktne metode koristite kad niste sigurni kakva će biti implementacija neke metode ali vam je ta metoda neophodna. Apstraktna klasa je u svakom slučaju nepotpuna klasa. 


( Apstraknta klasa je klasa koja ne može imati objekte )

Na primer, pretpostavite da u vašem projektu morate imati klasu koja predstavlja konekciju sa bazom podataka, međutim vi ne znate kakve će sve baze koristiti kompanija za koju radite projekat.


public abstract class Connection
{
public abstract string ConnectionString();

}

Tada pravite apstraktnu klasu sa apstraktnom metodom koja predstavlja konekciju sa bazom podataka i ostavljate kompaniji da prilikom korišćenja vaše apstraktne klase u drugoj klasi nadjačaju metodu za konekciju i definišu njeno ponašanje.

class Program : Connection
{
public override string ConnectionString()
       {
return "ConnectionString for the database!";

}          
}

Na ovaj način svako ko na primer hoće da vidi tabelu zaposlenih mora implementirati konekciju sa bazom podataka u kojoj se podaci zaposlenih nalaze. Možda kompanija ima posebnu bazu podataka i tabelu zaposlenih u Beogradu i jednu drugu u Novom Sadu i podaci su fizički odvojeni, što nije praksa ali se dešava kad velika kompanija kupi malu. Onda vaša apstraktna klasa je idealno rešenje za sve vaše konekcije sa bazama podataka.

Koje su još stvari bitne za apstraktnu klasu? 

Friday, December 11, 2015

Klase u C# programskom jeziku


Klasa je šablon za objekat koji opisuje vrstu i količinu podataka koje će objekat sadržavati, ali ne predstavlja ni jedan određen primerak objekta. Tačnije, klase u osnovi predstavljaju šablone iz kojih se mogu stvarati objekti. Objekti sadrže podatke i metode za manipulisanje i pristup podacima, ali klasa određuje koje podatke mora da sadrži svaki konkretan objekat iako klasa sama ne sadrži nikakve podatke. Taj konkretan objekat uglavnom u literaturi se naziva primerak ili instanca. Inače klasa kao reč je nastala prema pojmu klasifikacija. Kada pravite klasu, vi uređujte članove klase u smisleni entitet. Za razliku od stuktura, klase vam daju mnogo veću fleksibilnost i više mogućnosti s obzirom da klase podržavaju nasleđivanje. Strukture su vrednosni tip podataka dok su klase referentni tip. Klase imaju ključnu ulogu u C# programskom jeziku i kodiraju se drugačije od klasa u C++ programskom jeziku. O klasama u C++ programskom jeziku možete pogledati ovde. Rad sa klasama u C# programskom jeziku je mnogo jednostavniji.



( Diagram članova klase u C# programskom jeziku ) 


Primer iz stvarnog sveta za klasu možete zamisliti i kao svojstva koja opisuju na primer tramvaj. Tramvaj ima motor, sedišta, kočnice, ponekad i klima uređaj; može da se vozi napred i nazad. Klasa opisuje sva svojstva i radnje koje jedan tramvaj poseduje ali klasa ne predstavlja ni jedan određen tramvaj. U stvarnom svetu tramvaj bi predstavljao objekat. S obzirom da postoje različiti tramvaji, znači da postoje i različiti objekti; ali svi bi objekti tramvaj bili prepoznati kao primerci klase tramvaj. Klase opisuju svojstva i ponašanje objekta preko članova. Članovi klase mogu biti polja, svojstva, metode i događaji. Klasu pravite tako što koristite ključnu reč class. Sintaksa za pravljenje klase je sledeća:

class ime_klase
{
         članovi_klase

}


Šta je enkapsulacija?


Friday, October 16, 2015

Klase u C++ programskom jeziku – 2 deo



U prethodnom postu; možete ga pogledati ovde, sam vam predstavio jedan osnovni primer pravljenja i korišćenja klase koja je kodirana u istom fajlu vašeg programa. U poslovnom svetu to nije praksa i zato ću vam pokazati kako se pravi i poziva klasa koja je podeljena u header fajl i poseban fajl za klasu iz Visual Studio-a 2015. Ukoliko koristite neki drugi IDE, verovatno sami trebate napraviti fajlove ili je procedura nešto drugačija ili IDE odrađuje posao na svoj način. Važno je da je suština ista. U ovom postu opisujem isti program kao u prethodnom postu osim što je prepravljen i što su mu dodate neke stvari, pre svega radi pravilnije upotrebe klasa ali i dalje njihovog učenja. Kad pokrenete novi program, vi možete u prozoru Solution Explorer-a da kliknite na projekat desnim tasterom miša, zatim na Add i izaberite Class, kao na slici:


( Solution Explorer, dodavanje klase projektu )

Zatim je potrebno da izaberite C++ Class, i samo klikom na dugme Add pokrećete čarobnjaka za klase Generic C++ Class Wizard. Klasi je dovoljno dati naziv i pritisnuti dugme Finished. U našem primeru klasa se zove Animal.


( Generic C++ Class Witzard )

Čarobnjak za klase je dodao dva nova fajla u projekat; Animal.h i Animal.cpp. U fajlu Animal.h definišu se deklaracije promenjivih i funkcija dok se funkcije pišu u Animal.cpp fajlu. Kad pogledate u fajl Animal.h, možete videti da je IDE čarobnjak za wizard ubacio naziv i telo klase, ali i prazan konstruktor klase i destruktor iste. Pogledajte kod u fajlu Animal.h koji Visual Studio-a 2015 
generiše i pre nego što počnete da pišete klasu:

#pragma once

class Animal
{
public:
        Animal();
       ~Animal();

};

Šta je konstruktor, a šta je destruktor?

Thursday, October 15, 2015

Klase u C++ programskom jeziku – 1 deo


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 { 
                 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?