Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #32438

Jak zrobić to elegancko i obiektowo?

From Borneq <borneq@antyspam.hidden.pl>
Newsgroups pl.comp.programming
Subject Jak zrobić to elegancko i obiektowo?
Date 2019-02-17 14:13 +0100
Organization ATMAN - ATM S.A.
Message-ID <q4bmm8$1o0$1@node2.news.atman.pl> (permalink)

Show all headers | View raw


Z obiektowego punktu widzenia uchodzi za złą praktykę operowanie na 
polach obiektu za pomocą obiektu innej klasy, nie mówiąc o tym że w 
takim razie te pola powinny być publiczne.
Ale jak w takim razie zrobić elegancko taką rzecz: problem, który 
powstał przy wciąganiu danych z raportu WhereIsIt do mojego programu do 
katalogowania dysków:
Mam klasę MemEntry, w której są takie dane jak filename, size, time i 
ogólnie dane w rodzaju fileinfo. Mam klasę MemChunk, która zawiera listę 
MemEntry dla jednego katalogu.
Z drugiej strony raport czytam za pomocą klasy Reader. Zna ona format 
raportu. Czyta „chunk” czyli porcje dotyczące jednego katalogu do listy 
stringlist w której mamy pola – kolumny. Teraz dla  wierszy chunka 
wołany jest konstruktor MemChunk , który dla każdego wiersza woła 
konstruktor MemEntry. To MemEntry wypełnia swoje pola w konstruktorze, 
biorą np. filename kolumn 0 + 1 (filename+ext), size parsuje z kolumny 
4-tej a czas z 5-tej. (numery kolumn nie są na stałe a wynikają z 
nagłówka raportu). I wszystko było by dobrze, ale MemEntry i MemChunk 
miały nie wiedzieć o formacie raportu! To może tworzyć pusty MemEntry i 
wypełniać przez klasę Raport? Też źle z obiektowego punktu widzenia. Jak 
to elegancko rozwiązać, może jakieś klasy pośredniczące?

W innym miejscu tego projektu z kolei jest bazowa klasa drzewka, która 
ma takie metody jak addChild, listę childów tego typu. Z tego dziedziczy 
klasa mająca dodatkowe pola i metody, niestety, jak w tych metodach 
odwołujemy się do childów, to musi być dynamic_cast, jak to można 
przeprojektować?

Back to pl.comp.programming | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Jak zrobić to elegancko i obiektowo? Borneq <borneq@antyspam.hidden.pl> - 2019-02-17 14:13 +0100
  Re: Jak zrobić to elegancko i obiektowo? szykcech@gmail.com - 2019-02-17 06:07 -0800

csiph-web