[Pomysl] Problem dziedziczenia

0

Ostatnio pojawił się problem jak w temacie. Pisałem kiedyś, że w przypadku opisu VCL można zrobić to w postaci potężnego wykazu całej hierarchii, od TObject poczynając. Ale w takim przypadku niemożliwy będzie opis komponentu, jeśli nie ma zrobionego opisu dowolnej klasy macierzystej - wtedy wszystko się kładzie. Ale czy nie można napisać taki automatyczny system, który będzie dodawał te opisy, póki co z np. innym kolorem (coś w stylu TODO), bo inaczej autor nie mógł by opisać tego co chciał dać..

Przykładowo: ktoś chce dać opis klasy TWinControl. Dajmy na to w encyklopedii są już opisy: TObject, TControl ... brakuje: TPersistent, TComponent. Autor chcąc dodać opis swojej klasy musi podać hierarchie, system rozpoznaje co już z "drzewka" jest gotowe, a co nie - jeśli jakiegoś elementu brak - automatycznie dodaje go (w odpowiednim miejscu wykazu) z jakimś znacznikiem TODO, - po prostu z jakimś oznaczeniem, że nie jest jeszcze opisany. W ten sposób, nie trzeba będzie opisywać wszystkich klas macierzystych, a wykaz VCL bedzie "się tworzył sam"...

0

Niezle, ale zamiast listy TODO (a raczej oprocz) mogly tworzyc, jak na wikipedii, "zaczatki artykulu". Jakby ktos chcial pozniej uzupelnic to to zrobi. Jakby ktos sie nudzil, to wybierze cos z listy TODO :)

0

w tabeli tabeli dodać pole z numerem id klasy macierzystej i dodować wszystki metody i inne pierdoły w pętli, dopóki to pole nie bedzie miało wartości 0, tak mi się wydaje

0

oto obiecana funkcja miejmy nadzieje dobra, nie testowana. W zamysłe miało być tak:
odczyt pola klasa_<ort>macieżysta </ort>o podanym przez usera klasy_id i dalej jeżeli to pole ma wartość inną w domyśle większą od 0 to do powiekszony zostaje ciąg i funkcja ta jest <ort>powtarazana </ort>dopóki nie dojdzie do 0 i potem

$str

jest w stawinone do SELECT * FROM metody WHERE klasa=$str


```php
$sql= 'SELECT *  FROM metody WHERE '.czytaj( 34 , "" ); // wywołanie

function czytaj( $r , $str )
{
$sql = "select * from klasy where klasy_id=$r" ;
$result = mysql_query ( $sql ) ;

while ( $row = mysql_fetch_row( $result ) )
{
$r = $row['klasy_maciezysta'];
if($r !==0 )
{
$str.=' AND klasy_id='.$r;
czytaj( $r , $str );
}

}
$str=substr($str,4,0);
return $str;
}

chyba gotowe, nie testowane wieć mogłem sie walnąć

0

No ale to chyba czlowiek by musial dodac klase macierzysta z opisem "do zrobienia", bo automat? To raczej trzeba by bylo zdefiniowac w systemie wszystkie klasy, ktora dziedziczy z ktorej itd...?

0

No ale to chyba czlowiek by musial dodac klase macierzysta z opisem "do zrobienia", bo automat? To raczej trzeba by bylo zdefiniowac w systemie wszystkie klasy, ktora dziedziczy z ktorej itd...?

Na wzor tego co Detox napisal. Powiedzmy, ze uzytkownik musialby uzupelnic pole "sciezka"
przy czym sciezka to bylo:
/TObject/TPersistent/..../TNaszaKlasa
Na podstawie '/' moznaby rozdzielic na odpowiednie klasy i utworzyc, jezeli ktorejs nie ma.

0

chyba dobrze?

$sql = "select * from klasy where klasy_id=$klasa_id" ;
$result = mysql_query ( $sql ) ;

while ( $row = mysql_fetch_row( $result ) )
{
$r = $row['klasy_maciezyste'];
$r=explode("/",$r);
$i=count ($r);

while ($i<>0)
{
$i--;
$str.=' AND klasy_nazwa="'.$r[$i].'"';
}

}
$str=substr($str,4,0);

a dalej automatyczne dodawanie przy odczytywaniu z

SELECT * FROM tabela WHERE $str
0

dobra biore sie za tego RR tylko mam pewno pytanie, wątpliwość bo czytałem dokumentacje i dodawałem sobie tabele na localhoscie no i doszedłem do rr_class i tam patrze, że jest inne rozwiązanie niz w tym topicu:

Kolumny class_parent, left_id oraz right_id umożliwią zbudowanie drzewka klas, co da efekt hierarchiczności obiektów.
nie przeszkadza mi to, ale póki co tego nie rozumiem

0

Upss... zapomnialem dodac tutaj postu. Generalnie sprawa wyglada tak: ja sobie pisze na forum, dodaje topiki z PROPOZYCJAMI budowy danej klasy/modulu czy struktury tabeli. Jak po 2 dniach nie widze odzewu to uznaje ze nie ma sprzeciwu i umieszczam w dokumentacji opis. Ale nawet w dokumentacji sa to zalozenia/specyfkacja ktora jeszcze moze sie zmienic. Takze u mnie na kompie nawet nie stworzylem tych tabel, ktore proponowalem, to tylko rozpisek.

Z kolumnami left_id oraz right_id jest tak: sa to kolumny ktorych wartosci maja sluzyc do tworzenia drzewka klas prezentujacego zaleznosci pomiedzy klasami (dziedziczenie). Algorytm opatry o te wartosci jest o wiele szybszy niz taki oparty o rekurencje. Polecam google - tam na pewno znajdziesz rozpisek o tym algorytmie.

// ale za to bardzo powolny, jeśli chodzi o dodawanie i usuwanie - ŁF

0

no fakt na razie to tylko Ty i chmolu coś piszecie, a ja się dopiero zaczynam się włączać więc rozumiem, tą irytacje. dobra juz znalazlem cos o tym wkrótce to przestudiuje

0

Sorry jezeli odebrales to jako irytacje. Chcialem tylko wyjasnic jakimi prawami to sie zadzi [green] Jezeli chodzi o strukture tabel to ja tylko tak rozpisalem to w specyfikacji, nawet na kompie u siebie nie mam ich utworzonych.

Wkortce w dokumetnacji umieszcze rozpiske na temat inzynierii programowania oraz modelu kaskadowego wraz z prototypowaniem, aby wyjasnic ten specyficzny tryb pracy.

Dopisane:Na CVS znajduje sie dokument RoadRunner (w katalogu /docs), tam po krotce jest wyjasniony model kaskadowy prototypowaniem.

Ale bardzo pokrotce [green] Po wiecej informacji odsylam do google, warto szukac wg. slow:

  • model kaskadowy
  • model spiralny
  • model iteracyjny
  • model kaskadowy z prototypowaniem
  • programowanie ekstremalne
  • inzynieria oprogramowania
  • cykle zycia oprogramowania
0

po polsku trudno cos zdobyc czy chodzi o to ->http://www.aesthetic-theory.com/learn.php?mptt?

0

Jezeli chodzi o ten algorytm budowania drzewka to tak... ale gdzies po polsku tez widzialem.

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