• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podstawy programowania obiektowego, konstruktory

0 głosów
886 wizyt
pytanie zadane 27 kwietnia 2017 w C i C++ przez dzik_majowy Nowicjusz (120 p.)
Siemanko. Zaczynam przygodę z programowaniem obiektowym, i mam pewną rozkinę, jak ugryźć takie raczej proste zadanka.

1.Utwórz klasę ułamek. Zdefiniuj w niej konstruktor domniemany z parametrami oraz funkcję dodaj, która obsłuży zapis u2=u2.dodaj(u1)

2.Utwórz klasę string. Obsłuż zapis string s1("ALA) oraz string s1=s2;

Podpowiedź do zadani 2: string (char *, int roz

Macie pomysł jak to ugryźć? Chętnie popatrzyłbym na poprawnie napisany kod, zazwyczaj uczę się poprzez analizowanie dobrze napisantch fragmentów.

2 odpowiedzi

0 głosów
odpowiedź 27 kwietnia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Z czym masz konkretnie problem? Rozumiem, że przyjemnie uczy Ci się analizując gotowy przykład, ale takich przykładów w internecie są... tysiące. Polecam Ci takie przejrzeć, a to zadanie potraktować jako takie sprawdzenie wiedzy :)

  1. Poczytaj sobie jak się buduje klasy. Zobacz sobie jak działają konstruktory. Jeśli chodzi o zapis u2=u2.dodaj(u1), to musisz po prostu napisać metodę dodaj(). Typem zwracanym jest Ulamek, tak samo, jak parametrem tej metody jest Ulamek. Po prostu w klasie musisz mieć jakieś pole zawierające wartość, a metodą dodaj będziesz dodawał te wartości do siebie.
  2. Co do zapisu string s1("ALA"), to musisz zdefiniować konstruktor, który przyjmie jako parametr na przykład obiekt klasy std::string, albo const char*. Wtedy taką zmienną będziesz mógł przypisać do pola klasy.
    Jeśli chodzi o zapis string s1=s2, to poczytaj o przeciążaniu operatorów. Ty musisz przeciążyć operator =.
     
komentarz 27 kwietnia 2017 przez criss Mędrzec (172,570 p.)

(...) Po prostu w klasie musisz mieć jakieś pole zawierające wartość, a metodą dodaj będziesz dodawał te wartości do siebie.

Przypisanie sugeruje, że metoda ma tworzyć nowy obiekt. Ew. dodawać do siebie i zwracać referencje do *this. W sumie dość dwuznaczne polecenie, bo nie wiadomo czy dodaj() ma zastępować + czy +=.

Jeśli chodzi o zapis string s1=s2, to poczytaj o przeciążaniu operatorów. Ty musisz przeciążyć operator =. 

Tutaj zostanie uruchomiony konstruktor kopiujący. Oczywiście operator przypisania też by wypadało napisać, ale to tak bardziej "z grzeczności" :D niż z powodu wymagań zadania. Swoją drogą obie te metody zostaną wygenerowane automatycznie przez kompilator, więc w zasadzie nic nie trzeba robić. "Obsłuż" miało by więcej sensu gdyby było wiadomo co ma ta klasa robić. Kiepsko napisane zadania :/

komentarz 27 kwietnia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Przypisanie sugeruje, że metoda ma tworzyć nowy obiekt. Ew. dodawać do siebie i zwracać referencje do *this. W sumie dość dwuznaczne polecenie, bo nie wiadomo czy dodaj() ma zastępować + czy +=.

No zgodzę się, ale ja sugerowałem się też nazwą funkcji, która mówi dodaj - a skoro jest wywoływana na danym obiekcie to rozumiem, że to do niego ma zostać "dodany" inny obiekt. Ta nazwa tutaj nie pasuje :)

A co do reszty - to dzięki, zawsze nowa dawka wiedzy laugh

 

0 głosów
odpowiedź 27 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
W programowaniu chodzi o rozwiązywanie problemów.
Nie nauczysz się rozwiązywania problemów, jeżeli będziesz się uczył pojedynczych zadań. I choć będziesz w stanie w przyszłości napisać wiele rzeczy, to nie będziesz potrafił wymyślić nic samemu.

Poczytaj w internecie co to jest klasa, konstruktor, konstruktor domniemany. Jak działają funkcje w klasie, czym jest string, czym jest wskaźnik. Po tym wszystkim, spróbuj napisać to samemu. Jak już będziesz miał kod, który nie będzie działał z nieznanego ci powodu i pomimo szukania informacji w internecie (Po angielsku polecam). Wtedy powinieneś zadać pytanie na forum.

Podobne pytania

0 głosów
1 odpowiedź 584 wizyt
pytanie zadane 16 kwietnia 2016 w C# przez dasad33 Użytkownik (710 p.)
0 głosów
1 odpowiedź 687 wizyt

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,324 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...