Darmowe Forum
Grudzieñ 22, 2024, 04:16:33 *
Witamy, Go¶æ. Zaloguj siê lub zarejestruj.
Czy dotar³ do Ciebie email aktywacyjny?

Zaloguj siê podaj±c nazwê u¿ytkownika, has³o i d³ugo¶æ sesji
Aktualno¶ci: Forum zosta³o uruchomione!
 
   Strona g³ówna   Pomoc Zaloguj siê Rejestracja  
Strony: [1]
  Drukuj  
Autor W±tek: Obiekty  (Przeczytany 6337 razy)
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« : Luty 27, 2013, 08:08:24 »

Programowanie strukturalne przedstawia program jako seriê procedur, dzia³aj±cych na danych.
Funkcja jest zestawem specyficznych, wykonywanych jedna po drugiej instrukcji.
Dane s± ca³kowicie odseparowane od funkcji, zadaniem programisty by³o zapamiêtanie,
która funkcja wywo³uje inne funkcje, oraz jakie dane by³y w wyniku tego zmieniane.
G³ówn± ide± programowania strukturalnego jest: „dziel i rz±d¼.” Program komputerowy mo¿e byæ uwa¿any za zestaw zadañ.
Ka¿de zadanie, które jest zbyt skomplikowane aby mo¿na by³o je ³atwo opisaæ, jest rozbijane na zestaw mniejszych zadañ sk³adowych, a¿ do momentu gdy, wszystkie zadania s± wystarczaj±co ³atwe do zrozumienia.
Programowanie strukturalne stanowi niezwykle efektywny sposób rozwi±zywania z³o¿onych problemów. Posiada kilka ograniczeñ nie pozwalaj±cych na bardziej efektywne u¿ywanie kodu.

Jêzyk C++ jest zorientowanym obiektowo, pozwala to na zastosowanie w nim trzech zasad charakterystycznych dla programowania obiektowego: hermetyzacjê (kapsu³kowanie), dziedziczenie oraz polimorfizm.
Hermetyzacja(kapsu³kowanie) oznacza ukrycie metod w czê¶ci prywatnej.
Dziedziczenie to specjalny mechanizm, który umo¿liwia  tworzenie klas pochodnych, czyli bêd±cych niejako rozbudowan± wersj± klas ju¿ istniej±cych.
 Polimorfizm w programowaniu obiektowym oznacza wykorzystanie tego samego kodu do operowania na obiektach przynale¿nych ró¿nym klasom, dziedzicz±cym od siebie. Zjawisko to jest zatem ¶ci¶le zwi±zane z klasami i dziedziczeniem, aczkolwiek w C++ nie dotyczy ono ka¿dej klasy, a jedynie okre¶lonych typów polimorficznych.
Programowanie obiektowe - pozwala na operowanie w programie struktur± która nosi nazwê obiektu.
Obiekt = Dane +Metody.
Dane - (w³a¶ciwo¶ci/ properties) to warto¶ci opisuj±ce obiekt, odpowiadaj± zmiennym w programowaniu strukturalnym. Mo¿na im przypisywaæ warto¶ci za pomoc± operatora = .
Metody - to funkcje wykorzystywane dla ¶ci¶le okre¶lonych danych.
Obiekt jest elementem pewnej klasy.
W C++ nale¿y na pocz±tku zadeklarowaæ klasê i dopiero potem obiekty bêd±ce potomkami klasy.


Metoda zstêpuj±ca polega na:
Roz³o¿yæ ca³y problem na ¶ci¶le okre¶lone podproblemy i udowodniæ, ¿e je¶li ka¿dy podproblem jest rozwi±zany poprawnie, a te rozwi±zania s± po³±czone w okre¶lony sposób, to pierwotny problem te¿ jest rozwi±zany poprawnie. Proces dzielenia na podproblemy nale¿y prowadziæ tak d³ugo, a¿ ich rozwi±zanie mo¿na zapisaæ za pomoc± kilku wierszy w wybranym jêzyku programowania.
Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #1 : Luty 27, 2013, 08:31:44 »

#include <cstdlib>
#include <iostream>

using namespace std;
class osoba
{protected:
char imie[255], nazwisko[255];
int dlug;
public:
osoba();
osoba(char *aimie, char anazwisko, int adlug){};
private: int wiek;
};

int main(int argc, char *argv[])
{ osoba miecio;
    system("PAUSE");
    return EXIT_SUCCESS;
}
osoba::osoba(){};

W programie przedstawionym wy¿ej napisa³em dwie metody o nazwie osoba. Osoba to równie¿ nazwa klasy. Takie dzia³anie nazywane jest przeci±¿eniem nazwy metody , kompilator rozpozna w³a¶ciw± metodê na podstawie liczby parametrów.

Kolejn± nowo¶ci± jest sposób deklaracji cia³a metody. Podobnie jak przy deklarowaniu funkcji w programowaniu strukturalnym cia³o mo¿na umie¶ciæ przy deklaracji prototypu
(osoba(char *aimie, char anazwisko, int adlug){};) lub poza deklaracj± klasy (osoba::osoba(){}).
Wtedy jednak trzeba napisaæ do jakiej klasy przypisana jest dana metoda, s³u¿y temu podwójny dwukropek :: . Operator :: nazywany jest operatorem widoczno¶ci.

Do ograniczenia dostêpu do danych konieczne jest zadeklarowanie z jakimi zmiennymi ma program do czynienia. Istniej± trzy poziomy dostêpno¶ci:
public - oznacza,¿e umieszczone za nim pola i metody s± dostêpne w ca³ym programie.
protected - s± dostêpne w sposób bezpo¶redni, przez u¿ycie operatora wyboru sk³adowej - kropki ( o tym pó¼niej) tylko w klasach pochodnych od danej klasy.
private - brak jest bezpo¶redniego dostêpu do do pól.
Je¿eli zmienna jest typu public, to mo¿na do niej siê do niej odwo³aæ stosuj±c wywo³anie:
miecio.osoba();

Je¿eli zmienna jest typu private  lub protected to na zewn±trz klasy nie mo¿na tego zrobiæ, trzeba wykorzystaæ metodê która bêdzie typu public, ale o tym pó¼niej.
Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #2 : Marzec 06, 2013, 09:19:59 »

By³o ciê¿ko spróbujemy trochê ³atwiej. Proszê sobie wyobraziæ,¿e piszemy grê wojenn± w której uczestnicz± pojazdy takie jak czo³gi, transportery, samochody pancerne.

Zadeklarujmy zatem klasê czolg, która bêdzie posiada³a w³a¶ciwo¶ci : amunicja, predkosc,  odpornosc, strzal.
#include <cstdlib>
#include <iostream>

using namespace std;
class czolg
{public:
        int amunicja;
        int predkosc;
        int odpornosc;
        int strzal;};
int main(int argc, char *argv[])
{
    system("PAUSE");
    return EXIT_SUCCESS;
}
-------------------- wersja z klas± transporter ------------------------------------
#include <cstdlib>
#include <iostream>

using namespace std;
class czolg
{public:
        int amunicja;
        int predkosc;
        int odpornosc;
        int strzal;};
class transporter
{public:
        int amunicja;
        int predkosc;
        int odpornosc;
        int strzal;
        int osoby;
        };
int main(int argc, char *argv[])
{
    system("PAUSE");
    return EXIT_SUCCESS;
}

------------------------------------ wersja uproszczona wykorzystuj±ca dziedziczenie -----------
#include <cstdlib>
#include <iostream>

using namespace std;
class czolg
{public:
        int amunicja;
        int predkosc;
        int odpornosc;
        int strzal;};
class transporter :public czolg
{public:
        int osoby;
        };
int main(int argc, char *argv[])
{
    system("PAUSE");
    return EXIT_SUCCESS;
}
Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #3 : Marzec 06, 2013, 09:44:50 »

#include <cstdlib>
#include <iostream>

using namespace std;
class czolg
{public:
         int amunicja;
         int predkosc;
         int odpornosc;
         int strzal;};
class transporter :public czolg
{public:
      int ludzie;};

int main(int argc, char *argv[])
{czolg t34;
transporter rosomak;
rosomak.predkosc=40;
rosomak.ludzie=12;
t34.amunicja=5;
    system("PAUSE");
   
}
------------------- krzaczek, agrest i inne  drzewka---------------------------


#include <cstdlib>
#include <iostream>

using namespace std;
class krzaczek
{public:
         int wysokosc(int x){};};
class ciernisty : public krzaczek{};
class drzewo
{public:
        int wysokosc;};
class lisciast:public drzewo{};       
int main(int argc, char *argv[])
{lisciast brzoza;
brzoza.wysokosc=5;
    system("PAUSE");
    return EXIT_SUCCESS;
}
« Ostatnia zmiana: Marzec 13, 2013, 10:28:57 wys³ane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #4 : Marzec 13, 2013, 09:08:51 »

Destruktor i konstruktor.
Programowanie obiektowe wprowadza dwie funkcje pe³ni±ce szczególn± rolê.
Konstruktor - który s³u¿y do automatycznego inicjowania obiektów.
Destruktor -funkcja s³u¿±ca do kasowania obiektu. Kiedy wykorzystywany jest destruktor? Destruktor wykorzystywany jest wtedy , kiedy przed usuniêciem obiektu musz± byæ wykonane pewne dzia³ania, np. usuniêcie z pamiêci danych, wys³anie zapytania, czy u¿ytkownik jest pewien swojego dzia³ania.
Konstruktor tworzy, a destruktor usuwa obiekt i zwalnia zarezerwowan± dla obiektu pamiêæ.

Konstruktory i Destruktory domy¶lnie s± zawsze funkcjami bezargumentowymi-  czyli nie zwracaj± rezultatu.
Nazwa Konstruktora jest identyczna jak nazwa klasy do której jest przypisany.
W jêzyku C++ mo¿na przeci±¿aæ Konstruktory, nie mo¿na przeci±¿aæ Destruktorów.

W jêzyku C++ deklaracja konstruktora nie jest konieczna. W przypadku braku zadeklarowanego konstruktora kompilator jêzyka C++ automatycznie dodaje konstruktor bezparametrowy, który niczego nie wykonuje. Brak konstruktora jest jednak pewnym odstêpstwem od regu³y.
Obecno¶æ konstruktora, to kompletna klasa.



#include <cstdlib>
#include <iostream>
#include<string>
using namespace std;
class motocykl
{
  int rocznik;
  std::string producent;
  public:
  std::string model;
  motocykl();
  ~motocykl();                                               //DEKLARACJA DESTRUKTORA
};
motocykl::motocykl()
{
  cout<<"Do tej pory  nasz obiekt ma dane: \n";
  cout<<"\n Producent: "<<producent;
  cout<<"\n Rocznik"<<rocznik;
  cout<<"\n Model"<<model;
  cout << "\n Teraz konstruktor nadaje poczatkowe \n";
  cout << " wartosci danym obiektu \n";
  producent="Yamaha";
  model="YZF - R1";
  rocznik=2008;
  cout<<"\n Kostruktor nadal wartosci: \n";
  cout<<"\n Producent: "<<producent;
  cout<<"\n Model: "<<model;
  cout<<"\n Rocznik: "<<rocznik;
}

motocykl::~motocykl() {                               // DEFINICJA DESTRUKTORA
    cout << "\n \n zniszczylem ERLANA";
}

int main(int argc, char *argv[])
{
  motocykl ERLAN;
  cout<<"\n-----------------------";
  cout << "\n zmieniam model";
  ERLAN.model="R6";              //ODWO£ANIE SIÊ DO SK£ADOWEJ OBIEKTU
  cout << " \n teraz model to: " << ERLAN.model;
  return(0);
}
   
   
« Ostatnia zmiana: Marzec 13, 2013, 09:13:01 wys³ane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #5 : Marzec 20, 2013, 09:38:06 »

#include <cstdlib>
#include <iostream>
using namespace std;
class klasa
{ public: char imie[255];
public: char nazwisko[255];
int wiek;
int lpier;
klasa();
~klasa();
};
klasa:: klasa(){cout<<"witaj";};


int main(int argc, char *argv[])
{
    system("PAUSE");
    return EXIT_SUCCESS;
}
Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #6 : Maj 08, 2013, 11:15:54 »

#include <cstdlib>
#include <iostream>

using namespace std;
class czlowiek{  public: float wiek,masa;
public: czlowiek(){};
~czlowiek(){};};

class kobieta:  public czlowiek{char wyksz;
public: kobieta(){};};
class facet: czlowiek{int sila;};

int main(int argc, char *argv[])
{facet kuba , blizniak1, blizniak2;
kobieta aska, ela, monika;
cout<<endl<<"Podaj wiek= ";cin>>aska.wiek;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

blackmoon spw zlotasiodemka moikrewni polski-serwer-rpg