admin
|
|
« : 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
|
|
« 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
|
|
« 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
|
|
« 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
|
|
« 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
|
|
« 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
|
|
« 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
|
|
|
|
|