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

Konstruktor - pytanie

Object Storage Arubacloud
0 głosów
307 wizyt
pytanie zadane 27 lutego 2017 w C i C++ przez Bartosz Chojnacki Nowicjusz (120 p.)

Witam wszystkich!

Znalazłem takie oto zadanie do samodzielnej realizacji:

 

Zdefiniuj klasę kolo, która powinna zawierać:

pola prywatne:

a) promień koła (typ float)

b) kolor wypełnienia (typ int)

c) konstruktor bezparametrowy inicjujący wartość początkową pola koła (dowolnie ustaloną)

d) konstruktor z parametrami promień, kolor wypełnienia

metody publiczne:

a) Oblicz_Pole(..), obliczająca pole powierzchni koła

b) Ustaw_Promien(..), zmieniająca promień koła

c) Ustaw_Kolor(..), zmieniającą kolor koła

d) funkcję zaprzyjaźnioną Porownaj_Kola(KOLO A, KOLO B), porównującą, czy dwa koła mają taką samą powierzchnię i kolor.

Uruchom w programie głównym sekwencję instrukcji dla dwóch obiektów K1, K2: konstruktor bezparametrowy, porównanie pól, ustawienie tego samego koloru, porównanie pól, ustawienie różnych kolorów, porównanie pól.

Mam tylko jedną wątpliwość odnośnie konstruktora inicjującego początkową wartość pola. W poleceniu nie zawarto jednak informacji mówiącej, że klasa powinna zawierać zmienną pole koła. Jak w takim razie nadać tę wartość, skoro nie definiujemy takiego pola w klasie? Czy można to zinterpretować w takiej sytuacji jako niedokładność polecenia i należy jednak dodać zmienną pole koła do obszaru klasy? Czy jest to jednak celowy zabieg i możemy tak zdefiniować konstruktor, aby rzeczywiście nadal nam wartość pola koła bez jednoczesnego definiowania tej zmiennej w klasie? Jeżeli tak, to jak to zrobić?

 

z góry dziękuję za pomoc i pozdrawiam.

1
komentarz 27 lutego 2017 przez niezalogowany
Mi się wydaje, że chodzi o ustalenia dowolnego promienia koła tylko tak dziwnie ktoś napisał. Nadając promień masz wszystko co potrzeba do obliczenia pola.
komentarz 16 marca 2017 przez Bartosz Chojnacki Nowicjusz (120 p.)

Hipcio, powróciłem do tego programu po dłuższym czasie i mam jeszcze jedną wątpliwość. Otoż utworzyłem metodę obliczPole, która poprzez return zwraca wartość pola koła (nie definiowałem atrybutu poleKola w klasie). Utworzyłem też zaprzyjaznioną funkcję, która porównuje oba utworzone obiekty. O ile z porównaniem koloru koła,czyli atrybutu bedacego w klasie nie ma żadnego problemu, bo w funkcji bez problemu można porownac dwa atrybuty dla dwoch roznych obiektow:

if (o1.kolor == o2.kolor)

To nie za bardzo wiem jak zabrać się do porównania wartości pola koła, którą zwraca metoda obliczPole. Zapis:

if (o1.obliczPole == o2.obliczPole)

wywołuje błąd. W jaki sposób w tej funkcji zaprzyjaznionej mogę odnieść się do wartosci pola koła, która nie jest atrybutem tej klasy?

komentarz 16 marca 2017 przez niezalogowany

Skoro obliczPole jest metodą to czy nie wystarczy zrobić tak:

if ( o1.obliczPole() == o2.obliczPole() )
komentarz 20 marca 2017 przez Bartosz Chojnacki Nowicjusz (120 p.)
Jeszcze raz dziękuję za pomoc, wszystko działa.

Nie bylem pewien, czy komplilator uzna taki zapis za poprawny (nawiasy okrągłe funkcji w instruckji if), więc próbowałem kombinować ze wskaznikiem pokazującym na metodę funkcji, ale nie za bardzo wychodziło.

1 odpowiedź

+1 głos
odpowiedź 27 lutego 2017 przez draghan VIP (106,230 p.)

Czy jest to jednak celowy zabieg i możemy tak zdefiniować konstruktor, aby rzeczywiście nadal nam wartość pola koła bez jednoczesnego definiowania tej zmiennej w klasie? Jeżeli tak, to jak to zrobić?

Nie można zdefiniować pola klasy bez jawnego umieszczenia deklaracji pola w deklaracji klasy.

W poleceniu nie zawarto jednak informacji mówiącej, że klasa powinna zawierać zmienną pole koła. Jak w takim razie nadać tę wartość, skoro nie definiujemy takiego pola w klasie? Czy można to zinterpretować w takiej sytuacji jako niedokładność polecenia i należy jednak dodać zmienną pole koła do obszaru klasy?

Pole koła jest ściśle związane z jego promieniem. Sądzę, że to jest po prostu pomyłka w poleceniu i należy zainicjalizować promień. Nie dodawałbym do klasy kolejnego pola, które wprost jest związane z innym, chyba że obliczanie jego wartości byłoby kosztowne.

komentarz 28 lutego 2017 przez Bartosz Chojnacki Nowicjusz (120 p.)
Dziękuję bardzo za szybką odpowiedz !

Podobne pytania

0 głosów
1 odpowiedź 355 wizyt
pytanie zadane 5 kwietnia 2021 w C i C++ przez Beginner555 Obywatel (1,760 p.)
0 głosów
2 odpowiedzi 179 wizyt
pytanie zadane 23 lipca 2020 w C i C++ przez RufinB Obywatel (1,830 p.)
0 głosów
1 odpowiedź 151 wizyt
pytanie zadane 30 października 2019 w C i C++ przez Mjkl Nowicjusz (170 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...