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

Podstawy programowania obiektowego, konstruktory

VPS Starter Arubacloud
0 głosów
488 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,590 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ź 241 wizyt
pytanie zadane 16 kwietnia 2016 w C# przez dasad33 Użytkownik (710 p.)
0 głosów
1 odpowiedź 450 wizyt

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...