←  Tutoriale

AMXX.pl: Support AMX Mod X i SourceMod

»

C++
Podejście obiektowe do programowania

Zablokowany

-PainKiller- - zdjęcie -PainKiller- 24.10.2010

Obiektowość zmienia podejście i spojrzenie na programowanie. Ideą jest ułatwienie życia programistą, pewnego rodzaju odniesienie kodu do świata rzeczywistego.

Dla zobrazowania napiszę prymitywny program mający na celu przedstawienie istoty programowania obiektowego ;

stworzymy sobie klasę samolot, klasa jest niczym innym jak typem danych, wbudowane typy takie jak char, int, string(z biblioteki) czy inne nie posiadają możliwości wprowadzenia takich informacji jak "obecna wysokosc" czy "nazwa" (jednocześnie)

#Include <iostream>
using namespace std; 

class samolot
{
public:  //zmienne(pola, właściwości) lub funkcje(metody) - publiczne, można sie do nich odwołać z każdego miejsca programu.
int wysokosc; 
samolot()       //deklaracja "konstruktora" jest to funkcja ktora wywoływana jest podczas tworzenia obiektu, kompilator pozna ze jest to konstruktor w momencie gdy bedzie posaiadał taka sama nazwe jak klasa
{
wysokosc = 0;    //nadajemy stworzonemu obiektowi wlasciwosc wysokosc na zero; (obiektu jeszcze nie mamy)
}

void podaj_wysokosc()
{
cout<<"jestesmy teraz na wysokosci: "<<wysokosc<<endl; 
}

void w_gore(int ile)
{
wysokosc += ile; 
}

void w_dol(int ile)
{
wysokosc -= ile; 
}


private:  //zmienne(pola, właściwości) lub funkcje(metody) - prywatne, można sie do nich odwołać tylko pomiędzy klamrą otwierającą deklaracje klasy a zamykającą.
}; //zakończenie deklaracji klasy[u] średnikiem[/u]


main()
{

samolot tupolev; //STWORZYLIŚMY obiekt "tupolev" i jednoczesnie wywolaismy konstruktor czyli obiekt ma juz jedna wlasciwosc jest to jego wysokość na jakiej sie znajduje, konstruktor dał mu zero

//dowiemy sie gdzie jestesmy
tupolev.podaj_wysokosc(); 

//wzniesiemy sie 100 do gory
tupolev.w_gore(100); 
tupolev.podaj_wysokosc(); 

//zlecimy 50 w dol
tupolev.w_dol(50); 
tupolev.podaj_wysokosc(); 


system("pause"); 
}

nie kompilowałem, zakładam że działa

mamy tutaj konstruktor i trzy metody, dwie sterujace i jedna informujaca o naszym samolocie, mozemy nim sterowac góra/dół a także możemy sie dowiadywać na jakiej wysokosci jestesmy, wystarczy stworzyć menu i animacje i już mamy gre.... :blaga:

oczywiscie mozna robic kolejne samoloty zmieniajac tylko nazwe a odnosimy sie do nich tak samo

samolot F16; 
F16.w_gore(500); 
F16.w_dol(100); 

F16.podaj_wysokosc();     //wynik powinien wyjsc ze jestesmy na 400 <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' />
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 25.10.2010

string to klasa a nie wbudowany typ danych
Odpowiedz

pAC - zdjęcie pAC 25.10.2010

mozna tez powiedziedz ze string to łańcuchy znaków albo klasa sluzy do sterowania napisami ;)
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 25.10.2010

a dziedziczenie? funkcje wirtualne? no i taby ;)
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 25.10.2010

hmm w zasadzie to powinien napisac to w gotowych funkcjach bo to przyklad klasy a nie tutorial xD
Odpowiedz

  • +
  • -
kur3k - zdjęcie kur3k 01.12.2010

samolot tupolev; to nie czasem instancja klasy, nie jestem pewien, nie pisze w C++ :)

fajny tut dot. OPP Metody i atrybuty klas - a metody i atrybuty instancji ( w python ), na początek styka :)
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 01.12.2010

tupolev to obiekt(instancja/egzemplarz) klasy samolot

// nie uzywa sie nazwy metody tylko funkcje skladowe szczegolnie jesli piszesz w tutach
Odpowiedz

-PainKiller- - zdjęcie -PainKiller- 01.12.2010

// nie uzywa sie nazwy metody tylko funkcje skladowe szczegolnie jesli piszesz w tutach

nie wiem kto tak ustalił ale przypuszczam że to jedynie Twoje zdanie do którego oczywiście się nie przystosuję, nawet ludzie pracujacy w tym fachu mówią "metoda"
Odpowiedz

  • +
  • -
kur3k - zdjęcie kur3k 04.12.2010

G[O]Q nie wiem, ale u mnie na studiach każdy używa metoda/w każdej książce z OPP mam napisane metoda. Ale funkcja składowa też pewnie poprawnie, metoda == funkcja, a każda funkcja jest składową klasy.

Tak naprawdę śmieszą mnie Wasze tuty na temat programowania, używasz słowa konstruktor a nie piszesz czym jest ? Dodajesz kod, a nie lepiej skupić się na czysto teoretycznym podejściu, wypocić temat, a kod na końcu ?
Odpowiedz

  • +
  • -
kur3k - zdjęcie kur3k 08.03.2011

Taka mała informacja do czytających ten artykuł, nie czytaj a jak przeczytałeś zrestartuj mózg. Programowanie zorientowane obiektowo jest tematem na wiele stron ... A nie na kilka zdań, i uważam, że ten artykuł Ci zamąci w głowie!
Odpowiedz
Zablokowany