🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.objects
2 messages
2 total messages Started by Rafal Sun, 28 Aug 2005 12:14
Poczatkujacy w programowaniu OO
#12223
Author: Rafal
Date: Sun, 28 Aug 2005 12:14
65 lines
2766 bytes
Dopiero zaczynam zabawe z programowaniem obiektowym i mam narazie takie
pytanie:

Chce sobie caly program zamknac w jednym obiekcie, a pozniej w programie
glownym wywolac raptem pare linijek.
Robie wiec tak ze tworze biblioteke w ktorej mam definicje wszystkich klas
potrzebnych mi do stworzenia tej jednej.

Mam taki uklad:

klasa PROGRAM zawiera m.in. obiekty klasy OB1 i OB2
klasa OB1 zawiera obiekty klas OB1-1 i OB1-2
natomiast klasa OB1-1 zawiera obiekty klas OB1-1-1 i OB1-1-2


PROGRAM
    |    \
    |     \
  OB1     OB2
  /    \
OB1-1 OB1-2
/     \
OB1-1-1 OB1-1-2

(To nie jest dziedziczenie tylko uklad obiektow)

Program glowny wyglada mniej wiecej tak:

//------------------------------------------
#include "biblioteka.h"

int main() {
    PROGRAM program1;

    program1.run();

    return 0;
}
//------------------------------------------

Chcialbym teraz w pewnej metodzie klasy OB1-1-1 odwolac sie do obiektu klasy
OB2 znajdujacego sie w strukturze jak powyzej.
Nie moge tego zrobic gdyz w bibliotece nie istnieje obiekt klasy PROGRAM
wiec i brak obiektu wchodzacego w jego sklad (klasy OB2). Odwolanie
PROGRAM::OBiekt2 nie daje mi pelnych mozliwosci.
Jak to sie powinno najladniej robic? :)

Czy z najwyzszych w hierarchi obiektow przekazywac nizej informacje o
OBiekt2 (wskaznik, referencja)  w liscie argumentow metod?  <chyba troche
niejasno sie wyrazam>
Praktycznie w kazdej klasie korzystam z obiektu PROGRAM::OBiekt2 wiec bylby
on przekazywany w prawie kazdym wywolaniu metod tych klas - troche
niweygodne.



Ps. Czy taki styl programowania (zamykanie calego programu w jednej klasie
ktora ma raptem pare metod (1, 2, 3),  w ktorych korzysta sie z obiektow
znajdujacych sie krok nizej w hierarchi, ktore to obiekty wywoluja
znajdujace sie jeszcze nizej, itd ..., to dobry styl programowania?



Pozdrawiam
Rafal
Re: Poczatkujacy w programowaniu OO
#12224
Author: Dawid Kedziora
Date: Tue, 30 Aug 2005 10:22
43 lines
3249 bytes
On Sun, 2005-08-28 at 14:14 +0200, Rafal wrote:

> Chcialbym teraz w pewnej metodzie klasy OB1-1-1 odwolac sie do obiektu klasy
> OB2 znajdujacego sie w strukturze jak powyzej.
> Nie moge tego zrobic gdyz w bibliotece nie istnieje obiekt klasy PROGRAM
> wiec i brak obiektu wchodzacego w jego sklad (klasy OB2). Odwolanie
> PROGRAM::OBiekt2 nie daje mi pelnych mozliwosci.
> Jak to sie powinno najladniej robic? :)

To znaczy ze nie masz odpowiednio zdefiniowanych zaleznosci miedzy
obiektami. Zdefiniuj dokladnie ktory obiekt agreguje (zawiera) inne,
i z ktorymi sie komunikuje (tzn w uproszczeniu moze np. wywolywac ich
metody). Jezeli zalezy Ci np. zeby jakis obiekt byl globalny tzn zeby
kazdy mogl miec do niego dostep i zeby byla tylko jedna jego instancja
to zrob go singletonem. Mozesz przekazywac referencje np. w
konstruktorach itp.

Generalnie poczytaj o wzorcach projektowych (gang of four).

> Czy z najwyzszych w hierarchi obiektow przekazywac nizej informacje o
> OBiekt2 (wskaznik, referencja)  w liscie argumentow metod?  <chyba troche
> niejasno sie wyrazam>
> Praktycznie w kazdej klasie korzystam z obiektu PROGRAM::OBiekt2 wiec bylby
> on przekazywany w prawie kazdym wywolaniu metod tych klas - troche
> niweygodne.

Mozesz tak robic ale to nic innego jak programowanie strukturalne.
Pobujesz tak naprawde zrobic te referencje globalnymi. To nie jest
programowanie obiektowe ktore kladzie glowny nacisk na enkapsulacje,
czyli ukrywanie wszystkiego co sie da. Zrob singleton z
PROGRAM::Obiekt2.

> Ps. Czy taki styl programowania (zamykanie calego programu w jednej klasie
> ktora ma raptem pare metod (1, 2, 3),  w ktorych korzysta sie z obiektow
> znajdujacych sie krok nizej w hierarchi, ktore to obiekty wywoluja
> znajdujace sie jeszcze nizej, itd ..., to dobry styl programowania?

No to jest moim zdaniem spoko. Mozesz o tej klasie myslec jak o pewnego
rodzaju dyspozytorze lub kontrolerze.


-- 
Archiwum grupy: http://niusy.onet.pl/pl.comp.objects
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads