[C++] Jak to jest z tym dzieleniem na klasy?


#1

Witam,

zaczynam naukę C++ i szukam właśnie czegoś o dzieleniu programu na klasy. Czego dokładnie nie wiem: :slight_smile:

Czy - tak jak w javie - można rozbić program na pliki (np. Main.java, Dane.java itp.), a potem pobierać z tych plików funkcje? W każdym pliku jest klasa która przechowuje odpowiednie funkcje. Klasy nawzajem pobierają je od siebie.

Z góry dziękuję.


(Johny) #2

Można,tak się robi duże programy przeglądarki internetowe odtwarzacze,itd.,możesz napisać swoją klasę zapisać kod w pliku,a potem ten plik dołączasz,duże programy są dzielone na moduły,duże programy składają się nawet z kilkuset plików,gdzie część to definicje,deklaracje klas,funkcji jako dodatkowe pliki nagłówkowe,w kodzie głównym wywołujesz co potrzeba,sama funkcja main jest funkcją główną

public - funkcja publiczna widoczna w całym programie,jej zmienne statyczne (static) można wywołać w innych funkcjach

to robisz tak że piszesz klasę publiczna,statyczną,albo prywatną


#3

ok. A jak się odwołać do funkcji w innej klasie?


(Drobok) #4
nazwa_klasy zmienna;

zmienna.nazwa_metody();

Metoda to funkcja w klasie.


(Johny) #5

Prosto przez dziedziczenie

Masz klasę A i klasę B,możesz stworzyć klase C,którza dziedziczy po A i B

class C : public A,B

klasa C będzie miała metody klasy A i B,poza tym poczytaj co to jest public,protected i private

objekt klasy C może wywoływać metody klas A i B bo po nich dziedziczy,

ponadto można tak przedefiniować metody w klasie,np. inaczej liczy się pole koła i pole kwadratu,inaczej trójkąta

private - prywatna metoda klasy tylko z niej można się odwoływać

protected - dostęp tylko przez obiekty klasy


#6

A jeszcze mam jedno pytanie:

załóżmy, że mam klasy A, B i C.

w klasie A mam zmienną int: zmienna1 = 0.

Teraz jedna z funkcji z klasy B dodaje 1 do tej zmiennej.

Potem jedna z funkcji z klasy C także dodaje 1.

W javie w takim przypadku trzeba określić zmienną jako statyczną. Inaczej w wyniku końcowym zmienna1 bylaby równa 1 a nie 2. Czy tutaj trzeba tez cos takiego zrobic?


(Johny) #7

W C++ też są zmienne statyczne,Java jest jakby rozwinięciem C++,zauważ,że są to trochę podobne do siebie języki,instrukcje warunkowe,pętle,zapisywane są podobnie


(somekind) #8

A ja sugeruję poczytać jakąś książkę albo tutorial o podstawach języka. To szybsze i bardziej efektywne niż pytanie o każdą z nich oddzielnie na forum. ;]


#9

Hmmm. W jednym pliku (tj. main.cpp) to działa, ale jak sobie rozbilem to na 2 pliki to już nie działa. Wyskakuje:

Kod: main.cpp

#include 


 int main()

 {

    Ptak ptak;

   ptak.jedz(); //metoda z klasy Zwierze

   ptak.lec(); //metoda z klasy Ptak


   Ryba *ryba=new Ryba();

   ryba->jedz(); //metoda z klasy Zwierze

   ryba->plyn(); //metoda z klasy Ryba

 }

nowaklasa.cpp

#include 

#include 


class Ptak{

    public:

             Ptak();

             void lec();

};


class Ryba{

    public:

             Ryba();

             void plyn();

};

(Johny) #10

a tamten plik za pomocą

include "ścieżka\mojaklasa.cpp"

dołączyłeś ?

swoje biblioteki zapisuje się w cudzysłowiach