Archiwa tagu: klasy

C++ kurs programowania obiektowego (#5) klasy

Klasy

Już w części o obiektach krótko nadmieniłem co to jest klasa. Przypomnijmy, klasa to taka definicja obiektu, przepis wg którego komputer stworzy później konkretny obiekt (reprezentanta) danej klasy. Poniżej definicja klasy dla smartfona.

Listing 2

class Smartfon
{

int waga;
int szerokosc;
int wysokosc;
int grubosc;
float ile_cali;
int bateria;

};

Widzisz, ze definicję klasy rozpoczynamy od słówka class. Następnie podajemy jej nazwę, a w kolejnych liniach pomiędzy nawiasami { } które określają rozpoczęcie ciała klasy { i zakończenie ciała klasy } umieszczamy treść naszej klasy. W naszym przypadku umieściłem tutaj cechy które określiliśmy wcześniej. Zwróć uwagę, że po każdej linii definiującej daną cechę dajemy znak średnika „ ; ”, Średnik dajemy także po nawiasie zamykającym ciało klasy „ }; ” .

W ciele klasy, oprócz cech, umieszczamy także metody (czyli funkcje opisujące zachowanie naszego obiektu), o czym wspominałem już wcześniej. Cała definicja Twojej klasy mogłaby więc wyglądać np. tak.

Listing 3

class Smartfon

{

int waga;
int szerokosc;
int wysokosc;
int grubosc;
float ile_cali;
int bateria;

void odbierz();
void zadzwon();

};

Oczywiście metody odbierz() i  zadzwon() nic nie robią. Chcę abyś na razie opatrzył się z kodem, tworzyć kod będziemy „za chwilę”. Słówka void jeszcze nie znasz więc wyjaśnię, że słówko to znaczy tyle, że nasza metoda niczego nie będzie zwracała. Widzisz więc, że metoda niczego nie musi zwracać. Może wykonać pewne polecenia zapisane przez programistę ale efektem działania naszej metody nie zawsze musi być zwrócenie jakiejś konkretnej wartości.

Wiemy już co to jest obiekt i co to jest klasa. Przyszedł więc czas na stworzenie obiektu wg opisu zawartego w klasie. Obiekt będziemy tworzyli wewnątrz funkcji main(), czyli wewnątrz „programu głównego”. Deklaracja obiektu jest identyczna z deklaracją zmiennej. Przy zmiennej z lewej strony jej nazwy określamy jakiego typu będzie wartość w tej zmiennej, czyli np.

int liczba;

Czyli zadeklarowaliśmy zmienną o nazwie liczba i o typie int. Czyli tak naprawę nasz int opisuje co będzie w środku zmiennej. A co opisuje co będzie w środku w obiekcie? No oczywiście klasa. Czyli analogicznie do deklaracji zmiennej możemy powiedzieć, że obiekt jest typu klasy która ten obiekt opisuje. Może trochę to dla Ciebie na pierwszy rzut oka zagmatwane ale spójrz na przykład poniżej. Postaram się to wyjaśnić za pomocą klasy którą przed chwilą napisaliśmy , czyli klasy Smartfon.

Smartfon smartfon1;

Co oznacza powyższy zapis. Mówi tyle, że zdefiniowaliśmy obiekt (już konkretnego reprezentanta) o nazwie smarfon1, który jest typu no właśnie dochodzimy do sedna, typu Smartfon, czyli klasy o nazwie Smartfon. Widzisz już analogię między definicją zmiennych i definicją obiektów? Tutaj idealnie widać, że klasa jest Twoim własnym typem, który później możesz wykorzystać przy obiektach.

Jak już  stworzyliśmy konkretny obiekt o nazwie smartfon1 to teraz możemy przypisać każdej z jego cech jakąś wartość zgodną z typem przypisanym do tej cechy np.

smartfon1.waga = 1000;  // pamiętaj waga miała być wyrażana w g.

Nasz kod w tym momencie wygląda jak poniżej.

Lising 4

#include <iostream>

using namespace std;

class Smartfon

{

    int waga;        // mierzona w g

    int szerokosc;   // mierzona w mm

    int wysokosc;    // mierzona w mm

    int grubosc;     // mierzona w mm

    float ile_cali;  // mierzona w calach

    int bateria;     // pojemnosc baterii mierzona w mAh

 

    void odbierz();

    void zadzwon();

};

 

int main()

{

    Smartfon smartfon1;

    smartfon1.waga = 1000;

    cout<< smartfon1.waga<<endl;

    return 0;

}

Gdybyśmy chcieli uruchomić kod powyżej to otrzymamy błąd „error : ‘int Smartfon::waga’ is private”. Co to oznacza? Oznacza to tyle, że cecha waga klasy Smartfon jest prywatna, czyli inne funkcje w „głównym programie” main() nie maja do niej dostępu i nie możemy przypisać jej żadnej wartości przy nowo tworzonych obiektach tej klasy. O modyfikatorach dostępu będzie mowa później w naszym kursie. Na razie musisz wiedzieć, że abyś mógł przypisać wartość do cechy obiektu wewnątrz funkcji main() to musisz „ustawić” jego cechy jako publiczne za pomocą modyfikatora public. Później dowiesz się, że jest jeszcze inne wyjście ale o tym w odcinku o modyfikatorach dostępu. Żeby ustawić cechy klasy jako publiczne wstaw słówko public: przed wszystkimi cechami w ciele klasy.

Listing 5

class Smartfon

{

  public:

    int waga;       

    int szerokosc;  

    int wysokosc;   

    int grubosc;    

    float ile_cali; 

    int bateria;    

 

    void odbierz();

    void zadzwon();

};

To tyle na razie odnośnie klas. Ale ten temat będzie się przewijał jeszcze nie raz.


c++ kurs programowania obiektowego spis treści  c++ kurs programowania obiektowego spis treścic++ kurs programowania obiektowego spis treści

C# Klasy

Klasy

Klasa to taka struktura w programie która spełnia dwie główne funkcje. Klasa może coś robić, czyli zawierać jakiś kod wykonywalny lub coś opisywać np. obiekt.

Przykładem klasy która coś robi (w naszym przypadku wyświetla tekst na ekranie) może być poniższy kod.

Listing. Klasa z kodem wykonywalnym.

static void Main(string[] args)

{

Console.WriteLine("Witaj świecie, to ja :)");

}

,a przykładem klasy która coś opisuje jest poniższy kod (klasa opisuje obiekt auto).

Listing. Klasa o nazwie auto opisujące właściwości samochodu.

public class auto

{

int rocznik;

string marka;

string nazwa;

string typNadwozia;

}

Tak jak określamy typ zmiennej, czyli mówimy jakiego rodzaju wartości może przyjmować ta zmienna, tak samo możemy określić typ obiektu. W powyższym przykładzie za pomocą klasy auto określiliśmy typ obiektu, który opisuje samochód. Innymi słowy określiliśmy jakiego rodzaju wartości może przyjmować obiekt typu auto.

Jak wspomniałem już wcześniej klasa może coś robić lub coś opisywać. Do składników klasy zaliczamy pola i metody. Pola to zmienne które przechowują wartości odpowiednich typów, odpowiedniego rodzaju, tak jak w przykładzie wyżej np. rocznik lub marka. Metody zawierają instrukcje wykonywalne, czyli opisują co program ma robić.