Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++, 10 elementowa tablica obiektow klasy

Haikari 08 Sty 2012 20:33 3531 6
  • #1 08 Sty 2012 20:33
    Haikari
    Poziom 8  

    Witam, chce zrobić jedno zadanie:

    Zdefiniować klasę Books. Utworzyć 10-elementową tablicę obiektów klasy do przechowywania informacji o książkach (author, title, year). Klasa musi zawierać metody set i get dla wszystkich pól danych oraz funkcje wczytującą i wyświetlającą dane. Program powinien w pętli wpisywać dane do
    tablicy obiektów i w kolejnej pętli wypisać informacje dla wszystkich pozycji na ekranie.

    Zrobiłem coś takiego
    nie wiem właśnie jak zrobić tą tablice prosze o pomoc :?:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0 6
  • #2 08 Sty 2012 20:51
    mickpr
    Poziom 39  

    Haikari napisał:

    nie wiem właśnie jak zrobić tą tablice prosze o pomoc :?:


    Zapamiętaj, że w C++ zdefiniowany przez ciebie typ jest równoprawnym typem, do istniejących (np. String).

    W związku z czym tablice definiujesz np. tak
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Pamiętaj że wszelkie operacje na tym typie musisz jakoś zdefiniować, od operatorów poprzez metody - do konstruktora i destruktora.

    0
  • #3 08 Sty 2012 22:15
    Haikari
    Poziom 8  

    Zbyt wiele mi to nie mówi, może trochę jaśniej?

    0
  • #4 08 Sty 2012 22:50
    mickpr
    Poziom 39  

    Poniżej przesyłam prosty sposób stworzenia i wykorzystania klasy.
    (skompiluj i uruchom - najlepiej w debuggerze - krokowo z podglądem konsoli). Mam nadzieję, że to trochę rozjaśni temat.
    Polecam przestudiowanie jakiegoś kursu C++

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #5 09 Sty 2012 00:04
    Haikari
    Poziom 8  

    Super, teraz jest to dla mnie bardziej zrozumiałe :)
    Dzięki za pomoc..

    0
  • #6 09 Sty 2012 14:39
    Haikari
    Poziom 8  

    Nadal mam problem z tym zadaniem, czytałem i oglądałem odnośnie konstruktorów i destruktorów i nie jestem pewien ale tutaj nie mam chyba po co wykorzystywać tego i dochodzi jeszcze jeden problem pobierania przez użytkownika stringów takich jak autor i tytul ksiazki.
    Pobierane jest do spacji a gdy juz znalazlem pobieranie ze spacja i uzywam getline(cin,autor); i zastosuje potem cin.ignore(); to co zrobilem dziala w 1 petli potem sie wysypuje moze i w sumie moze chodzi o ten konst i destr ale nie wiem za bardzo jak to zastosowac :/

    to moj kod

    Kod: cpp
    Zaloguj się, aby zobaczyć kod



    Kod: cpp
    Zaloguj się, aby zobaczyć kod
    [/code]

    0
  • #7 09 Sty 2012 16:15
    mickpr
    Poziom 39  

    Za bardzo Ci "zamieszałem".
    Wyobraź sobie, że masz tablice zmiennych typu books - o nazwie "ksiązki".
    Każda taka zmienna, oprócz tego, ze zawiera jakieś swoje cechy( autor, nazwa itp) zawiera też funkcje które może wykonać.

    Deklarując klasę (class) - określasz jakie ma parametry (zmienne) oraz funkcje które wykonuje (metody).
    Taka klasa jeszcze nie istnieje (to jest tylko opis - jak ona ma działać).

    W programie głównym (np. w funkcji main) deklarujesz sobie zmienną typu books (lub w naszym przypadku tablicę tych zmiennych).

    W momencie gdy program wchodzi do main ustawia sobie te zmienne na jakieś wartości. (Tak jak - przykładowo - zmienne niezainicjowane typu INT są standardowo inicjowane wartością "0"). To jakie operacje dzieją się w tym momencie wykonywane jest w konstruktorze klasy.

    Zmienne które stworzyłeś w ten sposób zwane są obiektami klasy.

    Następnie program przystępuje do wykonywania instrukcji. W naszym przypadku oznacza to, że już tablica zmiennych (ksiązki) już istnieje, ale ponieważ nie wstawiliśmy w konstruktorze jej wartości - w związku z czym jest pusta.

    Możesz wpisać więc właściwość dowolnej zmiennej "książki", - najpierw określając o którą (z 10) ci chodzi (indeksem w nawiasach []).
    Następnie wstawiasz '.' - jest to symbol dostępu, mówiący że będziesz się odnosił do konkretnego parametru lub funkcji tej zmiennej.
    Następnie podajesz właściwość którą chcesz dostać lub pobrać, lub funkcje. którą chcesz wykonać.

    W ten sposób operujesz niejako na zmiennej ksiązka[x] - która zawiera swoje wszystkie dane "w jednym miejscu", łącznie z operacjami - jakie możesz na tej zmiennej wykonać.

    Jeśli zdefiniujesz sobie funkcję - które napisze ci na ekranie zawartość pól, które posiada (np PokazAutoraOrazTytul) to może (ta funkcja) operować na zmiennych książka (tylko tych, które ma w zasięgu) i na przykład wyświetlić te informacje.

    Możesz zdefiniować sobie funkcje która będzie pobierała ci z CIN parametry i wpisywała je do "pól" (Autor, Tytuł) zmiennej.

    Możesz też dostać się do pól zmiennych obiektowych (ksiązka[x]) z funkcji main (podajac nazwe zmienej, kropkę i właściwość).
    Np.
    zmienna[x].Autor="xxxxs";
    zmienna[y].Tytul="yuyyyy";

    W tym konkretnym przypadku, stworzyłeś tablicę zmiennych obiektowych (books ksiazki[10]). Teraz powinieneś ustawić jej wartości.
    1. Możesz to zrobić z poziomu main - modyfikując pola ksiazka[x].autor i ksiazka[x].tytul dla kolejnych zmiennych
    2. Możesz to zrobić z poziomu klasy - tworząc funkcję np. ZmienAutora(string nowyautor)
    ZmienTytul(string nowytytul)

    Wybór należy do ciebie.

    Zalecane jest tworzenie funkcji operujących na zmiennych obiektu. W ten sposób zabezpieczasz się, że w jakimś miejscu dostajesz się do pól obiektu (Autor, Tytuł) w sposób niestandardowy. Jeśli zaś wszystko 'zamkniesz' w postaci klasy możesz zadbać dokładniej - i bezpieczniej - o to, w jaki sposób przechowujesz i korzystasz z danej zmiennej obiektowej.

    To tyle... tytułem wstępu

    :)

    0