Darmowe Forum
Maj 02, 2024, 04:53:15 *
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 6064 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

garage croissanta amazonsolidarnosc polishmaxlive cybersteam