Nesto za OOP.
8 отговора
492 прегледа
Nesto za OOP.
Hi,
Az sum sravnitelno nacinaest programist. Ima edin vapros, koito oste
ne mi e dosal na glavata, obace mnogo me interesuva.
Stava vupros za dynamicno construirane na obekti. Da si predstavim
slednoto:
Imam nekakwa baza danni. V nekoi poleta e zapisana informacia
w surow (binary raw) vid. Kak moje ot ot neia da se construirat
obekti, ciito classove sa definirani w prilojenieto.
Znam, ce tozi vapros e dosta slojen, i ne ocakwam prostorni
otgovori. Prosto mi se iska da cuia nekoi mnenia, i eventualno dobri
cetiwa (naj-dobre elektronni), ot koito principno da se hvanat nestata.
W momenta aktiwno uca ednowremenno MS VCPP i CPP Builder.
Blagodaria predvaritelno za mnenia i preporaki.
Az sum sravnitelno nacinaest programist. Ima edin vapros, koito oste
ne mi e dosal na glavata, obace mnogo me interesuva.
Stava vupros za dynamicno construirane na obekti. Da si predstavim
slednoto:
Imam nekakwa baza danni. V nekoi poleta e zapisana informacia
w surow (binary raw) vid. Kak moje ot ot neia da se construirat
obekti, ciito classove sa definirani w prilojenieto.
Znam, ce tozi vapros e dosta slojen, i ne ocakwam prostorni
otgovori. Prosto mi se iska da cuia nekoi mnenia, i eventualno dobri
cetiwa (naj-dobre elektronni), ot koito principno da se hvanat nestata.
W momenta aktiwno uca ednowremenno MS VCPP i CPP Builder.
Blagodaria predvaritelno za mnenia i preporaki.
Re: Nesto za OOP.
C++ sam po sebe si ne predlaga takiva vyzmojnosti.
Shte tryabva da polzvash razni extri, kato napr. CORBA (sigurno i COM ima takiva neshta) i implementation repository. Shte ti tryabva i kompilator po vreme na izpylnenie na prilojenieto, razbira se.
Java predlaga - vj. java.lang.reflect.* (kakto i nyakoy neshta ot java.lang.*) i toz proekt: [линк].
Pyk v drugi ezici kato Lisp i Prolog (ne te nyamat mnogo obshto s OOP :-) tezi neshta sa osnoven (i chesto - edinstven :-) pohvat.
Shte tryabva da polzvash razni extri, kato napr. CORBA (sigurno i COM ima takiva neshta) i implementation repository. Shte ti tryabva i kompilator po vreme na izpylnenie na prilojenieto, razbira se.
Java predlaga - vj. java.lang.reflect.* (kakto i nyakoy neshta ot java.lang.*) i toz proekt: [линк].
Pyk v drugi ezici kato Lisp i Prolog (ne te nyamat mnogo obshto s OOP :-) tezi neshta sa osnoven (i chesto - edinstven :-) pohvat.
Редактирано от Potencialen emigrant на
Сигурно ще кажа глупост,...
...щото хич не отбирам от DB, ама не можеш ли просто да сложиш данните в някакъв буфер, да насочиш поинтер от съответния клас към него и да си действаш?
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Re: Nesto za OOP.
eto ti 2 buzzwords
reflection, serialization - viz implementaciata v .NET tam izglezda po dobre ot JAVA/CORBA pone ot moia opit. Daze moze da si napravish class on the fly. Moze da poziapash i source, ako si motiviran. Za .NET tyrsi ROTOR project.
reflection, serialization - viz implementaciata v .NET tam izglezda po dobre ot JAVA/CORBA pone ot moia opit. Daze moze da si napravish class on the fly. Moze da poziapash i source, ako si motiviran. Za .NET tyrsi ROTOR project.
Re: Nesto za OOP.
class Creten
{
public:
int I;
char S[256];
};
void SaveCretenToDB(Creten*Cr)
{
/*
V DB si imas pole BLOB za clasa i pole koeto kazva kakav e klasa
I kato triabva da zapazis klasa zapazvas celia klas(v BLOB poleto) a v poleto za tip na klasa zapazvas tipa
*/
}
Creten*CreateCretenFromDB()
{
Creten*Ret;=NULL
ReadFromDb(&Ret,sizeof(Creten));
// Prochita celia clas ot BLOB poleto v DB ako tam se sadarza class Creten, kato predi tova alokira pamet
//AKo ne e ot tip Creten ne pravi nisto
return Ret;
}
void NewCreten()
{
Creten*Cr=CreateCretenFromDB();
if(!Cr)Cr=new Creten;
//Ili creatvash Creten ot BD ili dtno - kakto dojde;
}
{
public:
int I;
char S[256];
};
void SaveCretenToDB(Creten*Cr)
{
/*
V DB si imas pole BLOB za clasa i pole koeto kazva kakav e klasa
I kato triabva da zapazis klasa zapazvas celia klas(v BLOB poleto) a v poleto za tip na klasa zapazvas tipa
*/
}
Creten*CreateCretenFromDB()
{
Creten*Ret;=NULL
ReadFromDb(&Ret,sizeof(Creten));
// Prochita celia clas ot BLOB poleto v DB ako tam se sadarza class Creten, kato predi tova alokira pamet
//AKo ne e ot tip Creten ne pravi nisto
return Ret;
}
void NewCreten()
{
Creten*Cr=CreateCretenFromDB();
if(!Cr)Cr=new Creten;
//Ili creatvash Creten ot BD ili dtno - kakto dojde;
}
Hm?
Ne sum go probal kum momenta. Ama kak li stoi waprosa s
memeber functions? Inace to si e wse edno da rabotis ne
sus CLASSS a sus STRUCT.
Hi
memeber functions? Inace to si e wse edno da rabotis ne
sus CLASSS a sus STRUCT.
Hi
Re: Hm?
Ako triabva dyrzim nestata grubo ne professinalni i leko hakerski. Znachi nomera sys &ptrMyClass, size(MyClass) ste vyrvi dokato niamash nito edna virtualna funkcia ili member ot typ pointer v tozy class i vsickite mu roditeli.
Ako prodylzim v systia duh ste vyrvi i ako izpolzvash
CPBaseObj //p kato pavel :) vyv inheritance canonical form i sled tova samo single inheritance & no pointer members. I kogato pishesh ili chetesh ste si otmestvash pointera sys sizeof (CPBase) i namaliavash broia na chetenite bytes - da ne mazesh vtable.
Edno nivo nagore e da si definirash CPSerial sys virtualni funcii za Read & Write.
Sedvastot nivo e da definirash IPSerial - interface - sys Write&Read func i da si go implementtrash vseki class koito triabva da se pishe/chete.
Ako iskash da vsicko da e kakto trebe - vseki uvazasht sebesi framework ima support na serialization.
Ako prodylzim v systia duh ste vyrvi i ako izpolzvash
CPBaseObj //p kato pavel :) vyv inheritance canonical form i sled tova samo single inheritance & no pointer members. I kogato pishesh ili chetesh ste si otmestvash pointera sys sizeof (CPBase) i namaliavash broia na chetenite bytes - da ne mazesh vtable.
Edno nivo nagore e da si definirash CPSerial sys virtualni funcii za Read & Write.
Sedvastot nivo e da definirash IPSerial - interface - sys Write&Read func i da si go implementtrash vseki class koito triabva da se pishe/chete.
Ako iskash da vsicko da e kakto trebe - vseki uvazasht sebesi framework ima support na serialization.
Ще уточна нещо
Благодаря ви за съветите. Ще ми се да нправя някои уточнения,
защото не е правилно човек да открива топлата вода, след като
вече някой я използува.
Представям си следната задача. В База Данни са записани в полета
названия на класове (може и други описания), а в суров вид е запсана
информация необходим за конструирането им динамично. След това
приложенията имат за здача да ги конструират, без да знаят с
подробности какво е бъде поведението на тези класове. Тези класове
няма да съдържат виртуални член функции, нито пък статични.
Такава задача е примерно следната:
В Базата Данни е записана информация за различни машини и техните
детайли ( идруги неща). Тези машини една-с-една не си приличат.
Поради това няма как да се структурират номрмално таблици.
За да покажа на потребителя данни, и да ги актуализирвам, мога
да си послужа с обекти, конструирани чрез Данни от Базата. В тези
класове има методи обслужващи преставяне/въвеждане/актуализация
на доста различни по конструктивните си данни машини и изделия.
Моля да кажете, на какво ви прилича тази постановка. Сигурно
има други подходи, но този ми изглежда интересен.
Поздрави.
защото не е правилно човек да открива топлата вода, след като
вече някой я използува.
Представям си следната задача. В База Данни са записани в полета
названия на класове (може и други описания), а в суров вид е запсана
информация необходим за конструирането им динамично. След това
приложенията имат за здача да ги конструират, без да знаят с
подробности какво е бъде поведението на тези класове. Тези класове
няма да съдържат виртуални член функции, нито пък статични.
Такава задача е примерно следната:
В Базата Данни е записана информация за различни машини и техните
детайли ( идруги неща). Тези машини една-с-една не си приличат.
Поради това няма как да се структурират номрмално таблици.
За да покажа на потребителя данни, и да ги актуализирвам, мога
да си послужа с обекти, конструирани чрез Данни от Базата. В тези
класове има методи обслужващи преставяне/въвеждане/актуализация
на доста различни по конструктивните си данни машини и изделия.
Моля да кажете, на какво ви прилича тази постановка. Сигурно
има други подходи, но този ми изглежда интересен.
Поздрави.
XML ...
... is the answer of your prayers. kakto kazvat nazapad.
Nali ideiata beshe da imash dinamichni strykturi deto niama pravila ili pravilata sa razmiti. Lesno se pishe/chete, formata e text.
Moze da si slozish dori code kato VB/Jscript takche da neznaesh predvaritelno kakvo ste praviat tesi strukturi. Moze bi minimalni ogranichenia kato naprimer vsiaka da ima Start i Stop metod. Oranicheniata moze da si napishe vyv schema taka che parsera da gi proveriava....
Nali ideiata beshe da imash dinamichni strykturi deto niama pravila ili pravilata sa razmiti. Lesno se pishe/chete, formata e text.
Moze da si slozish dori code kato VB/Jscript takche da neznaesh predvaritelno kakvo ste praviat tesi strukturi. Moze bi minimalni ogranichenia kato naprimer vsiaka da ima Start i Stop metod. Oranicheniata moze da si napishe vyv schema taka che parsera da gi proveriava....