Dziedziczenie - odwoływanie się do obiektu klasy A w klasie B

Woter
2014-04-27 18:03
Woter
0

Jeśli zachodzi potrzeba wypisania zawartości zmiennej klasy A, w metodzie klasy B, to czy powinno użyć się tu dziedziczenia by uzyskać taką możliwość, czy jest jakiś inny lepszy sposób ?

Pozostało 580 znaków

2014-04-27 18:11

Rejestracja: 7 lat temu

Ostatnio: 2 lata temu

Lokalizacja: Wrocław

0

Zbyt ogólnie opisałeś sytuację, na moje oko używanie dziedziczenia tylko po to żeby wyświetlić zmienną, to duże przekombinowanie . Najlepiej kazać klasie A samej zdecydować czy zmienna powinna zostać wyświetlona i ew. ją wyświetlić. Jeżeli nie masz takiej możliwości, to lepiej dostać się do tego zmiennej przez publiczną metodę get...().

Pozostało 580 znaków

Woter
2014-04-27 18:20
Woter
0

No fakt, dziedziczenie nie jest tu potrzebne.

class A:
private:
int a,b,wynik;
public:
void wypisz();

class B
void metoda()
{
 wypisz(); //metoda klasy A
}

Przykładowe klasy, chcę w klasie B uruchomić metodę klasy A bez dziedziczenia.
dopisałem znaczniki - bogdans

edytowany 2x, ostatnio: bogdans, 2016-12-13 18:26
Następnym razem kod umieszczaj w znacznikach do wstawiania kodu <code=cpp> </code> - Zellus 2014-04-27 18:26
czepiasz się - krwq 2014-04-27 20:33

Pozostało 580 znaków

2014-04-27 18:25

Rejestracja: 7 lat temu

Ostatnio: 2 lata temu

Lokalizacja: Wrocław

0

Musiałbyś podać dokłaniejszy kod...
Z tego co podałeś mogę tylko wywnioskować że chcesz coś takiego:

class A
{
public:
   int wykonajOperacje(int a, int b);
}

class B
{
public:
   void robCos()
  {
     std::cout << A().wykonajOperacje(1,2) << std::endl;
  }
}

Nie za bardzo kombinujesz?

Pozostało 580 znaków

Woter
2014-04-27 18:29
Woter
0

No właśnie do tego dążyłem.

Pozostało 580 znaków

2014-04-27 18:39

Rejestracja: 6 lat temu

Ostatnio: 3 lata temu

0

Jeśli to cię obchodzi, to drugie nosi nazwę kompozycja :p Po prostu tworzysz sobie obiekt klasy w nowej klasie

edytowany 1x, ostatnio: MoorfoxD, 2014-04-27 18:41

Pozostało 580 znaków

Woter
2014-04-27 18:59
Woter
0

Ale trochę trudno mi jeszcze połapać jak mam wszystko ustawiać żeby było rozsądnie.
Jeśli mam klasę user z prywatnymi składnikami liczba a,b,c i metodę pobierającą te liczby. Potem np. klasę kalkulator obliczającą sumę liczb a,b klasy user, i wynik wpisujący do c. Na koniec jeszcze klasę która ma wyświetlać wyniki działań. Czy dobrze jest w takim wypadku utworzyć obiekt typu User w klasie kalkulator, by móc tam operować zmiennymi klasy User, i to samo z klasie od wyświetlania ?

Pozostało 580 znaków

2014-04-27 20:40

Rejestracja: 6 lat temu

Ostatnio: 4 godziny temu

0

Chcesz stworzyc obiekt klasy user w klasie kalkulator i ten sam obiekt w klasie wyswietl co doprowadzi do tego
ze klasa wyswietl bedzie wyswietlala puste obiekty klasy user(pole typu user w klasie kalkulator nie bedzie przeciez
tym samym co pole typu user w klasie wyswietl).

Pozostało 580 znaków

Woter
2014-04-27 21:00
Woter
0

No dobrze, to po prostu user będzie miał metody wyświetlające jej dane prywatne, i CWyświetl będzie mógł je wyświetlać, a CKalkulator modyfikować te dane. Jednak czy eleganckie jest takie umieszczanie CUser w CKalkulator, oraz czy zamiast tworzyć CWyświetl nie lepiej operować metodami wyświetlającymi CUser ?

Pozostało 580 znaków

2014-04-27 21:17

Rejestracja: 6 lat temu

Ostatnio: 12 minut temu

Lokalizacja: Warszawa

0

Zrób sobie metody gettery i settery set* oraz get* (tzw. modyfikatory i akcesory) w tej klasie User. Co to za problem potem żeby kalkulator pobrał user.getA user.getB obliczył co trzeba i ustawił user.setC(result)?? analogicznie można zrobić z wyświetlaniem po prostu wykorzystać get albo toString


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!

Pozostało 580 znaków

2014-04-27 23:03

Rejestracja: 6 lat temu

Ostatnio: 4 godziny temu

0

Mozesz takze skorzystac z mechanizmu relacji przyjazni, wtedy skladowe moga byc jeszcze bardziej prywatne bo ty ustalasz kto ma dostep do nich.
Wtedy wystarczy przekazac argument(obiekt klasy) przez referencje.

edytowany 1x, ostatnio: lookacode1, 2014-04-27 23:03

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0