Óåëßäá 1 áðü 3 123 ÔåëåõôáßáÔåëåõôáßá
ÅìöÜíéóç áðïôåëåóìÜôùí 1 ìÝ÷ñé 10 áðü 27

ÈÝìá: Ðñïãñáììáôéóìüò ìå object Pascal (Delphi)

Hybrid View

  1. #1
    ÌÝëïò
    Çìåñïìçíßá åããñáöÞò
    Mar 2012
    ÈÝóç
    Athens, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    99

    Ðñïãñáììáôéóìüò ìå object Pascal (Delphi)

    ÓêÝöôïìáé íá ãñÜøù êÜðïéá êåßìåíá ãéá áíôéêåéìåíïóôñåöÞ ðñïãñáììáôéóìü óå object pascal (Delphi). Äåí óêïðåýù íá ðåñéãñÜøù ôçí ãëþóóá áëëÜ íá äéáôõðþóù êÜðïéïõò êáíüíåò êáé ðñáêôéêÝò ðïõ Ý÷ù êáôáëÞîåé.

    Ìéá ðéèáíÞ ëßóôá èåìÜôùí åßíáé ç áêüëïõèç.
    1. ÊëÜóç & áíôéêåßìåíá (Class vs Object). Ðùò êáé ãéáôß.
    2. Object encapsulation, ðïëõìïñöéóìüò, êëçñïíïìéêüôçôá.
    3. ÔõðéêÞ åöáñìïãÞ, åíçìÝñùóç ôçò ïèüíçò êáé ÷ñïíïâüñåò äéáäéêáóßåò.
    4. TCP/IP sockets
    5. Äéåñãáóßåò - ÍÞìáôá (Threads) óáí êïììÜôé åðåîåñãáóßáò.
    6. Ðïëõíçìáôéêüò TCP/IP Server
    7. Modbus åðéêïéíùíßá ìÝóù TCP/IP
    8. ÓåéñéáêÞ åðéêïéíùíßá. ÄéáãñÜììáôá áëëáãÞò êáôÜóôáóçò.

    ÕðÜñ÷åé åíäéáöÝñïí ?

  2. #2
    ÅîÝ÷ïí ìÝëïò
    Çìåñïìçíßá åããñáöÞò
    Oct 2010
    ÈÝóç
    Athens, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    1,632
    Ðáíå ðïëëá ÷ñïíéá ðïõ å÷ù íá äù Delphi êáé ðéèáíïôáôá å÷ù ÷áóåé åðåéóïäéá.

    Ðáñïëá áõôá, ïé ôå÷íéêåò ðáñáìåíïõí ôå÷íéêåò..

    ð÷ modbus?



    Burn baby, burn

  3. #3
    ÅîÝ÷ïí ìÝëïò
    Çìåñïìçíßá åããñáöÞò
    Oct 2005
    ÈÝóç
    Nikea, , Greece.
    Éäéüôçôá:
    ÁðáíôÞóåéò
    2,979
    Óéãïõñá åãþ êáé ðéèáíüôáôá êáé ï ÊáðåôÜíéïò èá åíäéáöÝñåôáé.

    Êáé ãþ Ý÷ù íá ÷ñçóéìïðïéÞóù ôç ãëþóóá áðï ôï 1995 ïðüôå ìéëÜìå ãéá ðëÞñç Üãíïéá....



    I believe we should all pay our tax with a smile. I tried - but they wanted cash...

  4. #4
    ÌÝëïò
    Çìåñïìçíßá åããñáöÞò
    Mar 2012
    ÈÝóç
    Athens, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    99
    ÐÜíù ðïõ åß÷á áñ÷ßóåé íá áðïãïçôåýïìáé.

    ¼ëç ç áíáöïñÜ óå TCP/IP êáé ðïëõíçìáôéêïýò servers åßíáé ðáñáããåëéÜ áðü ôïí êáðåôÜíéï. Áðü ôá õðüëïéðá êÜðïéá åßíáé êïéíÜ ãéá üëåò ôéò OO ãëþóóåò êáé êÜðïéá åéäéêÜ óå Win32 ìå Delphi.

    ÕðÜñ÷åé ìéá ìåãÜëç áëëáãÞ óôï ðùò ãñÜöåéò ðñïãñÜììáôá, óåéñéáêÜ ìå C Þ ìå Fortran êáé üôáí ÷ñçóéìïðïéåßò objects. ÁëëÜæåé ï ôñüðïò ðïõ óêÝöôåóáé. Ôï éóïäýíáìï ðïõ ìðïñþ íá âñù åßíáé ôá êëåéóôÜ êïõôéÜ óôá ÓÁÅ, ìå óõãêåêñéìÝíïõò åéóüäïõò, ëåéôïõñãéêüôçôá (óõíÜñôçóç ìåôáöïñÜò) êáé åîüäïõò.
    ÐïëëÜ ôÝôïéá êïõôéÜ, óõíäåäåìÝíá ìåôáîý ôïõò õëïðïéïýóáí ôï óýóôçìá.


  5. #5
    ÌÝëïò
    Çìåñïìçíßá åããñáöÞò
    Mar 2012
    ÈÝóç
    Athens, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    99
    1. ÊëÜóç & áíôéêåßìåíá
    AíôéêåéìåíïóôñåöÞò ðñïãñáììáôéóìüò åßíáé ç äéáäéêáóßá ó÷åäßáóçò êáé õëïðïßçóçò ðñïãñáììÜôùí ìå âáóéêÞ ìïíÜäá ôçí êëÜóç. Ãíþñéóå áðïäï÷Þ ãéáôß ç M$oft, óôá ìÝóá ôçò äåêáåôßáò ôïõ 90, Ýâãáëå Ýíá ðïëý êáëü C++ compiler êáé ðñïþèçóå ôçí C++ óáí ãëþóóá ãéá ôï COM, ç Sun äéÝèåóå ôçí Java óáí open source êáé ç Borland ðñïóðÜèçóå íá ëÜìøåé îáíÜ âãÜæïíôáò óôçí áãïñÜ óáí VB killer, ôï Delphi.

    Ç êëÜóç (class) åßíáé ìßá ðñïäéáãñáöÞ / Ýíá ðñüôõðï êáé äçëþíåé ôçí óõìðåñéöïñÜ Þ ôçí ëåéôïõñãéêüôçôá ðïõ ìðïñåß íá ðáñÜó÷åé. ¸÷åé åíóùìáôùìÝíá ÷áñáêôçñéóôéêÜ (ìíÞìç), ïñáôÜ Þ ü÷é óôïõò ÷ñÞóôåò ôçò. ÅðéðëÝïí åêôåëåß åíÝñãåéåò (ìåèüäïõò), ðïõ ÷ñçóéìïðïéïýí ôçí åóùôåñéêÞ ìíÞìç êáé õëïðïéïýí ôçí ëåéôïõñãéêüôçôá ôçò.

    ¸÷åé ôÝóóåñá âáóéêÜ ÷áñáêôçñéóôéêÜ

    Abstraction : åðéôñÝðåé ôçí äçìéïõñãßá áöáéñåôéêþí ìïíôÝëùí
    Encapsulation: óõíäÝåé äåäïìÝíá êáé ëåéôïõñãßåò.
    Êëçñïíïìéêüôçôá (Inheritance) : åßíáé ç äõíáôüôçôá ìéáò êëÜóçò íá êëçñïíïìÞóåé äåäïìÝíá êáé ìåèüäïõò ìéáò Üëëçò ðñïãåíÝóôåñçò êëÜóçò.
    Ðïëõìïñöéóìüò (Polymorphism): ç äõíáôüôçôá ìéáò êëÜóçò íá êëçñïíïìÞóåé êáé íá ìåôáâÜëåé ôéò óõìðåñéöïñÝò ìéáò Üëëçò áíþôåñçò êëÜóçò.

    ÊÜèå êëÜóç ïñßæåé ìßá ìÝèïäï äçìéïõñãßáò (constructor) ìÝóù ôçò ïðïßáò äçìéïõñãïýíôáé áíôéêåßìåíá. Ôï áíôéêåßìåíï õëïðïéåß ôéò éäéüôçôåò ôïõ ðñïôýðïõ (class).

    Ôá áíôéêåßìåíá áëëçëåðéäñïýí êáé áíôáëëÜóïõí äåäïìÝíá ìåôáîý ôïõò ãéá íá äçìéïõñãÞóïõí ôåëéêÜ Ýíá ðñüãñáììá.

    Óôï Delphi ôá objects äçìéïõñãïýíôáé ðÜíôá äõíáìéêÜ êáé ç áíáöïñÜ ôïõò åßíáé Ýíáò pointer. Ï compiler åîÜëåéøå ôçí áíÜãêç ôçò ÷ñÞóçò ôïõ ^ êáôÜ ôçí ÷ñÞóç ôùí objects.

    Ïñßæåé åðéðëÝïí êáé ìßá ìÝèïäï êáôáóôñïöÞò (destructor) ôïõ áíôéêåéìÝíïõ ðïõ êáëåßôáé üôáí ðáýåé íá ÷ñçóéìïðïéåßôáé êáé áðïäåóìåýóåé ôçí ìíÞìç ðïõ ÷ñçóéìïðïßçóå..

    Áò äïýìå ôçí êëÜóç ÔStream. http://delphi.about.com/od/vclusing/l/aa110803a.htm
    Ôï TStream åßíáé áöçñçìÝíï êáé áíýðáñêôï. Ïé êëÜóåéò TMemoryStream êáé TFileStream, ðïõ êëçñïíïìïýí ôéò éäéüôçôåò ôïõ, õëïðïéïýí ôçí äõíáôüôçôá íá äéáâÜæïõíå Þ íá ãñÜöïõíå óå ìíÞìç Þ óå áñ÷åßï áíôßóôïé÷á.

    Óôï http://www.swissdelphicenter.ch/torr...ode.php?id=822 äÝóôå ôçí äÞëùóç ôçò procedure CompressStream(inpStream, outStream: TStream);
    ÄéáâÜæåé äåäïìÝíá áðü Ýíá stream óôçí ìíÞìç, ôá óõìðéÝæåé óôçí ìíÞìç êáé ôá ãñÜöåé óå Ýíá Üëëï stream.

    Ìéá ðñþôç ðñïöáíÞò âåëôßùóç åßíáé ç áðåõèåßáò ÷ñÞóç TFileStream ðïõ ëåéôïõñãåß áðåõèåßáò ìå áñ÷åßá êáé äåí áðáéôåß íá äéáâÜæïõìå ðñþôá ôï ðåñéå÷üìåíï óôç ìíÞìç (x 1) íá ôï áíôéãñÜöïõìå óôçí ìíÞìç (x2) íá ôï óõìðéÝæïõìå óôçí ìíÞìç (x 3) êáé óôçí óõíÝ÷åéá íá ôï ãñÜöïõìå óôï äßóêï.

    var fs1, fs2: TFileStream;
    begin
    fs1 := nil;
    fs2 := nil;
    try
    fs1:=TFileStream.Create('c:\fs1.dat',fmOpenRead or fmShareExclusive);
    fs2:=TFileStream.Create('c:\fs2.dat',fmOpenWrite or fmCreate);
    CompressStream(fs1, fs2);
    finally
    fs2.Free;
    fs1.Free;
    end;
    end;

    Óôï http://pages.cs.wisc.edu/~rkennedy/vmt áíáëýåôáé ðùò åðéôõã÷Üíåôáé ðïëõìïñöéóìüò êáé ìðïñïýìå íá äçëþíïõìå ôçí Compress ìå ïñßóìáôá ôýðïõ TStream êáé íá ôçí ÷ñçóéìïðïéïýìå ìå ïñßóìáôá ôýðïõ TMemoryStream & TFileSTream.

    Ôé ÷ñåéÜæåôáé þóôå Ýíá TFilestream íá ìðïñåß íá óõìðéÝæåé üôáí ãñÜöåé Þ áíôßèåôá ?
    http://www.koders.com/delphi/fidD3C8...B9D.aspx?s=zip ìáò áðáíôÜåé ôï åñþôçìá.

    Ðùò áíáãíùñßæïõìå objects, ìåèüäïõò êáé ÷áñáêôçñéóôéêÜ (attributes/properties).
    ÎåêéíÜìå ìå ìßá óýíïøç ðïõ ðåñéãñÜöåé ôï ðñüâëçìá. Ôá ïõóéáóôéêÜ, åßíáé õðïøÞöéá objects. Áí õðÜñ÷ïõí êáé óôçí ðñáãìáôéêüôçôá ôüôå ôá óéãïõñåýïõìå.
    Ïé éäéüôçôåò Þ ôá ÷áñáêôçñéóôéêÜ ôïõò åßíáé attributes (ìíÞìç) êáé ïé ìÝèïäïé áðáíôïýí óå ìçíýìáôá êáé åðåíåñãïýí óôç ìíÞìç ôïõ object.

    Óôéò 16 Óåðôåìâñßïõ 1998 ïé Rolling Stones åìöáíßóôçêáí óôï ÏÁÊÁ.
    Åß÷á äïõëÝøåé ìå ôïí PCL (ðñüêåéôáé ìÜëëïí ãéá åðáããåëìáôéêÞ äéáóôñïöÞ íá áíáöÝñåóáé óå ößëï ìå ôï user name) ãéá ôçí ðñïåôïéìáóßá ôïõ ëïãéóìéêïý õðïóôÞñéîçò ôçò óõíáõëßáò.
    Ôï project áöïñïýóå 2 óõíáõëßåò, óôï ÏÁÊÁ êáé óôï ËéìÜíé óôçí Èåóóáëïíßêç.

    Ôá åéóéôÞñéá ôçò óõíáõëßáò Þôáí ðñïôõðùìÝíá ìå ïëüãñáììá êáé barcode, óå áñéèìçìÝíá ìðëïêÜêéá ôùí 100 åéóéôçñßùí. Ç åôáéñåßá …. áíÝëáâå ôçí äéÜèåóç ôùí åéóéôçñßùí êáé ìÝóù ôïõ call center ôçò, åðÝôñåðå ôçí êñÜôçóç èÝóåùí óå äéáöïñåôéêÝò æþíåò ôïõ ãçðÝäïõ êáé ìå äéáöïñåôéêÞ ôéìÞ, ðëçñùìÞ ìå ðéóôùôéêÞ êÜñôá, åìöáêÝëùóç ôùí åéóéôÞñéùí, áðïóôïëÞ óôïõò ðáñáëÞðôåò, åðéêïéíùíßá êáé åðáíáðïóôïëÞ óå ðåñßðôùóç áðïôõ÷ßáò ðáñÜäïóçò êáé ôåëéêÜ Ýëåã÷ï ôïõ åéóéôçñßïõ (ìÝóù ôïõ barcode) êáôÜ ôçí åßóïäï óôï ãÞðåäï.

    ÁíáöÝñù êÜðïéåò êëÜóåéò ðïõ ðñïêýðôïõí áðü áõôÞ ôç ìéêñÞ ðåñéãñáöÞ.
    1. Ôï Venue (èÝáôñï, ãÞðåäï) ðïõ ÷ùñßæåôáé óå èýñåò/æþíåò. ÊÜèå èýñá Ý÷åé èÝóåéò, áñéèìçìÝíåò Þ ü÷é (áãùíéóôéêüò ÷þñïò) êáé ìßá ôéìÞ.
    2. Ç ðáñÜóôáóç (Show), ìå ôçí çìåñïìçíßá, ðåñéãñáöÞ êáé ôï ãÞðåäï/èåÜôñï.
    3. Ôï block ôùí åéóéôçñßùí ìå áíáöïñÜ óå æþíç, ôéìÞ åéóéôçñßïõ êáé áðü-Ýùò áñéèìü åéóéôçñßïõ.
    4. Ôá åéóéôÞñéÜ ðïõ áíôéóôïé÷ïýí óå èÝóç
    5. Ï èåáôÞò, ìå ôçí äéåýèõíóç ôïõ, ôïí áñéèìü ôçò êÜñôáò ôïõ.
    6. Ôçí êñÜôçóç åíüò èåáôÞ, ìå çìåñïìçíßá êñÜôçóçò, ðáñÜóôáóç, æþíç, áñéèìü èÝóåùí êáé êüóôïò.
    7. Ôéò èÝóåéò ìéáò êñÜôçóçò.

    Ç èÝóç ôïõ ãçðÝäïõ ðñÝðåé íá åßíáé ìßá êëÜóç êáé êÜèå èÝóç Ýíá object ? (ÕðÜñ÷ïõí óðáóìÝíåò èÝóåéò ?)

    ÊÜèå êëÜóç ìðïñåß íá áðïôåëåßôáé áðü Üëëåò (ð÷ ÃÞðåäï, èýñá, èÝóç) Þ íá óõíäÝåôáé ìå êÜðïéá Üëëç (ðåëÜôçò ìå êñÜôçóç).

    Ïé êëÜóåéò áõôÝò áíáöÝñïíôáé óáí PDC (Problem Domain Components).

    Ôï áðïôÝëåóìá. http://www.tanea.gr/oikonomia/article/?aid=4034166
    Åãþ ðÞãá áõèçìåñüí óôéò ÂñõîÝëåò êáé åßäá ôïí Larry Elison íá ìéëÜåé ãéá ôï üñáìá ôçò Oracle áíôß íá áêïýóù ôï Angie.

    Ðùò áíáãíùñßæïõìå ôéò ìåèüäïõò
    Åßíáé ïé ëåéôïõñãßåò ìéá êëÜóçò. Îåêéíïýìå áðü ôéò âáóéêÝò ëåéôïõñãßåò êáé êáôáëÞãïõìå óôéò åéäéêÝò .

    ¸óôù üôé Ý÷ïõìå ôçí ðáñáêÜôù êëÜóç

    TSex = (sxMale,sxFemale);

    TMammal = class
    private
    fAge : double;
    fWeight:double;
    fHeight:double;
    fSex:TSex;
    public
    constructor Birth;
    destructor Die;
    procedure Sleep;
    procedure Work;
    procedure Eat;
    property Age : double read fAge write fAge;
    property Weight:double read fWeight write fWeight;
    property Height:double read fHeight write fHeight;
    property Sex:TSex read fSex write fSex;
    end;

    THuman = class(TMammal)
    public
    procedure Vote;
    end;

    Åßíáé âÝâáéï üôé ï êáèÝíáò èá ìðïñïýóå íá ðñïóèÝóåé êáé ðïëëÝò Üëëåò ëåéôïõñãßåò êáé ÷áñáêôçñéóôéêÜ. Ç êëÜóç åßíáé ìéá ðñïäéáãñáöÞ. Åðåêôåßíåôáé êáé ìåôáâÜëëåôáé.
    Óôçí êïñõöÞ ôçò êëçñïíïìéêÞò éåñáñ÷ßáò Ý÷ïõìå ðÜíôá ôéò ãåíéêÝò ëåéôïõñãßåò êáé ðñï÷ùñþíôáò ðñïò ôá öýëëá êáôáëÞãïõìå óôçí åîåéäßêåõóç ôùí ëåéôïõñãéþí.

    Ïèüíç êáôá÷þñçóçò – áðåéêüíéóçò
    Óôç óõíÝ÷åéá ðñÝðåé íá ó÷åäéÜóïõìå ôéò ïèüíåò ãéá ôçí êáôá÷þñçóç ôùí ÷áñáêôçñéóôéêþí êÜèå êëÜóçò - ïíôüôçôáò. Ïé ÁÐËÅÓ ïèüíåò Ý÷ïõí ëßãá ðåäßá êáé ëßãá ÷ñþìáôá êáé ÷ñçóéìïðïéïýí Ýíá font ÷ùñßò õðåñâïëÝò. Ôï áðëü åßíáé äýóêïëï.

    Ïé áíÜãêåò ôçò åìöÜíéóçò ôùí äåäïìÝíùí åßíáé áíåîÜñôçôåò áðü ôá ÷áñáêôçñéóôéêÜ ôçò êëÜóçò . Èá äçìéïõñãÞóïõìå ìßá öüñìá ãéá êÜèå êëÜóç ðïõ èÝëïõìå íá åíçìåñþóïõìå.

    Ïé öüñìåò êëÜóåéò áíáöÝñïíôáé óáí HIC (Human Interaction Components). Ôï âñßóêù éóïäýíáìï ìå ôéò HMI ïèüíåò /óõóêåõÝò ðïõ åìöáíßæïõí ôá äåäïìÝíá ðïõ óõëëÝãåé ôï plc.

    Ãéá ôï ãÞðåäï èá õðÜñ÷åé ç ÔVenueForm ìå ãñáöéêÜ êáé äõíáôüôçôá åðéëïãÞò èýñáò.
    Ç öüñìá èá äÝ÷åôáé äåäïìÝíá, èá ôá åëÝã÷åé ãéá ïñèüôçôá, êáé èá äçìéïõñãåß ìéá PDC êáé åíçìåñþíåé ôá ðåäßá ôçò.

    Ðùò áðü ôçí êëÜóç ðÜìå óôç database ?
    «ÕðÜñ÷åé ç Oracle êáé text files». Ôï åß÷å ðåé ðñéí áðü ÷ñüíéá, ôï 1998, ï Âáóßëçò êáé ðáñáìÝíåé äõóôõ÷þò áëÞèåéá. Áðü ôçí Üëëç ç M$oft ìå ôïí sqlserver äçìéïýñãçóå ôçí db ãéá ôéò ìÜæåò. ¸ãñáöåò Ýíá select * from table êáé ôá áðïôåëÝóìáôá åìöáíéæüôáí óå Ýíá åîáéñåôéêü åñãáëåßï. ÊáíÝíáò äåí íïéáæüôáí ãéá performance êáé üôé ïé writers ìðëïêÜñïõí ôïõò readers.

    Áñ÷éêÜ áíôéóôïé÷ïýìå êÜèå êëÜóç óå Ýíá ðßíáêá. ÊÜèå ðßíáêáò ðñÝðåé íá Ý÷åé ðñùôåýïí êëåéäß. ×ñçóéìïðïéïýìå, Ýíá ÷áñáêôçñéóôéêü ðïõ åßíáé ìïíáäéêü (ð÷ ÁÖÌ óå ðåëÜôåò) Þ Ýíá êñõöü ôå÷íçôü êëåéäß (surrogate key). ÅðéëÝîôå Ýíá ìéêñü êëåéäß (Ýíá 32 bit integer). Ìçí ÷ñçóéìïðïéåßôå Guids. ÓôáìáôÞóôå ôçí Üóêïðç ÷ñÞóç ÷þñïõ êáé õðïëïãéóôéêÞ éêáíüôçôáò.
    Ïé ðßíáêåò óõíäÝïíôáé ìåôáîý ôïõò ìå êëåéäéÜ (Foreign Keys). ×ñçóéìïðïéÞóôå ôá. Äçëþóôå óôç âÜóç üëïõò ôïõò êáíüíåò Þ ðåñéïñéóìïýò (constraints) ðïõ ïñßæïíôáé ãéá ôï äåäïìÝíá óáò.

    Ç DMC êëÜóç (Data Management Component) åðéêïéíùíåß ìå ìßá PDC êëÜóç êáé ðáñÜãåé ôéò êáôÜëëçëåò SQL åíôïëÝò ãéá íá åíçìåñþóåé ôçí database.

    H DMC êëÜóç «ôñÝ÷åé» äßðëá óôçí database, ðáñÜãåé 1..Í sql åíôïëÝò êáé ìÝóù ôïõ database client (Oracle OCI Þ M$oft dblib) ôéò óôÝëíåé ìå TCP/IP ðñïò åêôÝëåóç óôïí database server.
    Ïé êáôá÷ùñÞóåéò óôçí âÜóç ãßíïíôáé ðÜíôá óå åðßðåäï ïíôüôçôáò êáé íá ðñïóôáôåýåôáé ç áêåñáéüôçôá ôùí äåäïìÝíùí ÷ñçóéìïðïéïýíôáé transactions.
    Ôá transactions Ý÷ïõí ÁÕÓÔÇÑÁ ìéêñÞ äéÜñêåéá. ÄçëáäÞ, äåí åìöáíßæïõìå åñùôÞóåéò åíþ Ý÷ïõìå îåêéíÞóåé Ýíá transactions Þ äåí åêôõðþíïõìå ìÝóá óå transaction.

    Áðïöåýãïõìå ôá deadlocks. Áí óå Ýíá åíåñãü transaction åíçìåñþíïõìå ôéò åããñáöÝò ìå PK A êáé  êáé óå Ýíá äåýôåñï ôáõôü÷ñïíï transaction ôéò B êáé Á ôüôå ôï Ýíá transaction èá êëåéäþóåé ôï Üëëï.

    ÊÜðïéá óôéãìÞ ìïõ æçôÞóáíå âïÞèåéá ãéá Ýíá ðñüâëçìá deadlock ðïõ åìöáíéæüôáí óå ìßá Oracle. Äýï óôáèìïß êáôá÷ùñïýóáí ìåãÜëåò ðáñáããåëßåò êáé ðïõ & ðïõ êùëïýóáí.
    Ñþôçóá áí ôáîéíïìïýóáí ôéò ãñáììÝò ôéò ðáñáããåëßáò ðñéí ôçí êáôá÷þñçóç.

    Client Server Þ 3 Tier
    Ç åöáñìïãÞ ìáò ðåñéÝ÷åé ôéò HIC, PDC & DMC êëÜóåéò êáé ôñÝ÷åé óÝíá PC. ¸íá äßêôõï 100 Mbits ìáò óõíäÝåé ìå ôçí âÜóç äåäïìÝíùí. ¼ôáí ëïéðüí åéóÜãïõìå óôçí ïèüíç 1 êñÜôçóç ìå 100 èÝóåéò èá ðñÝðåé íá ôçí êáôá÷ùñÞóïõìå óôçí âÜóç ìå ÷ñÞóç 101 åíôïëþí “insert into table column list values list” ìÝóá óå Ýíá begin transaction & commit transaction.

    Ôé ãßíåôáé üôáí ç åöáñìïãÞ ìáò ôñÝ÷åé óôçí ÊïìïôçíÞ êáé ç database åßíáé óôïí ¢ãéï ÓôÝöáíï. Èá ðñÝðåé ç åöáñìïãÞ ìáò íá óðÜóåé óå HIC & PDC ðïõ «ôñÝ÷ïõí» óôçí ÊïìïôçíÞ êáé ôï DMC íá âñåèåß äßðëá óôçí database óôïí ¢ãéï ÓôÝöáíï.

    Ç äéá÷åéñéóôéêÞ åöáñìïãÞ äÝ÷åôáé Þ ðáñÜãåé äåäïìÝíá, ó÷çìáôßæåé Ýíá ìÞíõìá ìå áõôÜ (êùäéêïðïéçìÝíï ðéèáíÜ óáí xml) êáé ôï óôÝëíåé óôï PDC óôï ¢ãéï ÓôÝöáíï.
    Åêåß, Ýíáò xml to sql maper http://stackoverflow.com/questions/1...to-sql-mapping êáôá÷ùñåß ôá äåäïìÝíá óôçí âÜóç äåäïìÝíùí êáé åíçìåñþíåé ôïí ÷åéñéóôÞ ãéá ôçí åðéôõ÷ßá / áðïôõ÷ßá ôçò êáôá÷þñçóçò.

    «ÓôÝëíåé ôï ìÞíõìá óôïí Áãéï ÓôÝöáíï». Ðïéïò üìùò ôï ðáñáëáìâÜíåé ?

    Application Server
    ÌéëÜìå ãéá Ýíáí application server, áí ÷ñçóéìïðïéïýìå äéêÜ ìáò ìçíýìáôá Þ Ýíá Web Server ðïõ õðïóôçñßæåé http ðñùôüêïëëï (internet) ìå xml ðåñéå÷üìåíï.

    ÎáöíéêÜ Ýíáò open source Apache Web Server ìðïñåß Üíåôá íá ÷ñçóéìïðïéçèåß (îÝñù, Ý÷ïõìå öýãåé ëßãï áðü ôï Delphi).

    Ti êïéíü Ý÷ïõí Ýíáò application Server, o Web Server êáé ï database server. Áêïýíå óå ìßá ðüñôá ãéá óõíäÝóåéò, äÝ÷ïíôáé ðïëëáðëÝò óõíäÝóåéò ìÝóù TCP/IP áðü ðåëÜôåò ðïõ îÝñïõí íá ôïõò ìéëÞóïõí, äçìéïõñãïýí Ýíá áíåîÜñôçôï íÞìá (thread) åîõðçñÝôçóçò êÜèå óýíäåóçò êáé áíôáëëÜóïõí ìçíýìáôá ìå ôï ðåëÜôç ãéá üóï äéÜóôçìá äéáñêåß ç óýíäåóç.

    ¸íáò Delphi application server äÝ÷åôáé custom ìçíýìáôá, êáé óôï thread ôïõ ðåëÜôç (ÊïìïôçíÞ) äçìéïõñãåß ôï êáôÜëëçëï PDC object ðïõ ìåôáöñÜæåé ôï ìÞíõìá óå sql êáé ôá êáôá÷ùñåß óôçí âÜóç. ¸íáò Apache äÝ÷åôáé http ìçíýìáôá, áðïóðÜ ôï xml êáé ìÝóù php ôï êáôá÷ùñåß óôçí âÜóç. ¸íáò database server, äÝ÷åôáé ìçíýìáôá ìÝóù ôïõ database client, êáé ìðïñåß íá åêôåëÝóåé sql åíôïëÝò.

    The Delphi Way
    Ôï Delphi ðñï÷þñçóå Ýíá âÞìá ðáñáðÜíù åðåêôåßíïíôáò ôçí ãëþóóá Pascal þóôå ç ãñáììáôéêÞ ôçò íá åðéôñÝðåé ôçí äÞëùóç êëÜóåùí êáé ðñüóèåóå Ýíá åîáéñåôéêÜ ðáñáãùãéêü êáé ãñÞãïñï ðåñéâÜëëïí åñãáóßáò ãéá ôçí äçìéïõñãßá ðñïãñáììÜôùí. ÕðïóôÞñéîå ìÜëéóôá êáé êëçñïíïìéêüôçôá óôéò öüñìåò ôçò åöáñìïãÞò. Ìå ÷ñÞóç data aware components ìðïñåßò, îå÷íþíôáò üëá ôá ðáñáðÜíù, íá ìåôáâÜëåéò áðåõèåßáò ôá äåäïìÝíá ôçò âÜóçò.
    Tragic.
    ¼ëïé ìðïñïýóáí íá öôéÜîïõí ðïëý ãñÞãïñá äéá÷åéñéóôéêÝò Þ Üëëåò åöáñìïãÝò. ×ùñßò áíÜëõóç Þ ìåèïäïëïãßá. Ç êÜèå öüñìá, Ýâëåðå ôéò õðüëïéðåò, ï êþäéêáò ÷åéñéóìïý ôçò ïèüíçò, Ýìðëåêå ìå ôïõò õðïëïãéóìïýò êáé ìå ôçí áðïèÞêåõóç/áíÜêëçóç áðü ôïí âÜóç äåäïìÝíùí. Ìéá ìåôáâïëÞ óå êÜôé öáéíïìåíéêÜ áðëü åðéäñïýóå óå êÜôé Üó÷åôï.

    Ñßîôå ìéá ìáôéÜ óå Ýíá ôåëåõôáßï óáò project. ÌåôñÞóôå ôéò áðëÝò ñïõôßíåò, Ýîù áðü objects êáé ôéò global ìåôáâëçôÝò. Ôé èá óáò ðñïóöÝñïõí ôá objects. Äõóêïëüôåñç áñ÷éêÞ õëïðïßçóç (÷ñåéÜæåôáé óêÝøç), åõêïëüôåñç óõíôÞñçóç, ìåãáëýôåñç åðåêôáóéìüôçôá ëéãüôåñá bugs.

  6. #6
    ÅîÝ÷ïí ìÝëïò
    Çìåñïìçíßá åããñáöÞò
    Jun 2008
    ÈÝóç
    Glyfada, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    3,101
    Ìéáò êáé ãñÜöù áðü pda äéüôé:
    «ðñþôï êáëïêáßñé ìåôÜ áðü 18 ÷ñüíéá ðïõ äåí ðÞñá ôï portable ðáñáìÜó÷áëá óôéò äéáêïðÝò, Üñá Íßêç ìåãÜëç...»
    èÝëù íá ðù Ýíá ìðñÜâï óôïí pfys ãéá ôçí áíÜðôõîç áõôÞ ðïõ äåß÷íåé üôé ìðÞêå ìå 1000 óôï OOP, áëëÜ ôáõôü÷ñïíá êáé ôï åðéêÞäåéï ñÝêâéåì ãéá ìéá ðïëý ìåãÜëç ãëþóóá ðñïãñáììáôéóìïý ôçí ïðïßá ðåèÜíáíå ìå ôï æüñé ðñïò äüîá Üëëùí ü÷é áíáãêáóôéêÜ êáëýôåñùí...

    Ôïõ áöéåñþíù áõôü áðü ôïí êáéñü ôïõ 1993 üôáí äéÜâáæá üëåò áõôÝò ôéò óôñõöíÝò Ýííïéåò ìüíïò êáé äß÷ù äÜóêáëï...
    OOP & ÅëëçíéêÞ ãëþóóá óå üëï ôçò ôï ìåãáëåßï

    êáé ôï ðáñáôçñåßóôå ôï ùñáéüôåñï:
    Ðñïò Áìåñéêáíïýò áíáãíþóôåò: Ôé óçìáßíåé Polymorphism...
    Polymorphism is Greek "for many shapes" and it is just that: a way of giving an action...

    Ôé óçìáßíåé Ðïëõìïñößá;
    Ãéá ôïõò ¸ëëçíåò äåí ÷ñåéÜæåôáé éäéáßôåñç åîÞãçóç ôé óçìáßíåé ðïëõìïñößá. Áðü ðïëëÝò ðçãÝò ìáò áí áíáôñÝîïõìå ð.÷. óôï äùäåêÜèåï èá äïýìå üôé ïé Èåïß Ýðáéñíáí óõíÞèùò äéáöïñåôéêÝò ìïñöÝò óôçí åðéêïéíùíßá ôïõò ìå ôïõò èíçôïýò. Ìðïñïýìå íá ðïýìå üôé åß÷áìå ðïëýìïñöïõò èåïýò êé áð' üôé öáßíåôáé áõôÞ ç éäéüôçôá Üñåóå óôïí êüóìï.
    Ãéá ôá Delphi objects ç ðïëõìïñößá åßíáé ìßá æçëåõôÞ éäéüôçôá üðïõ åðéôñÝðåé óôï ßäéï áíôéêåßìåíï ìå ôá êïéíÜ ÷áñáêôñéóôéêÜ ð.÷. óôç ãÜôá êëÜóçò TGata íá ðåñéÝ÷åé ìßá áêüìç éäéüôçôá ð.÷. KaloGataki ç ïðïßá åßíáé ôýðïõ TKaloGataki ï ïðïßïò ðáßñíåé ð.÷. ôéò ôéìÝò: kgGourgourizon, kgKakistro, kgGriniazon, kgKleftizon
    Óõíåðþò ôï ßäéï ôï object ðïõ ðåñéãñÜöåé ìéá ãÜôá, ìðïñåß íá óõìðåñéëÜâåé ðïëëïýò ôýðïõò ãáôéþí äéüôé encapsulates åêôüò ôùí Üëëùí ð.÷. ÷ñùìáôéóìþí ôñé÷þìáôïò, ÷ñùìáôéóìü ìáôéþí êëð. ìßá áêüìá éäéüôçôá ðïõ åßíáé ôýðïõ «êáëü ãáôÜêé».
    Áðü êåé êáé ìåôÜ Ýñ÷åôáé ç êëçñïíïìéêüôçôá ç ïðïßá óïõ åðéôñÝðåé íá öôéÜîåéò ìßá Üëëç êëÜóç ãÜôáò ð÷ ôçí TSiamGata ç ïðïßá åßíáé êëÜóçò TGata êáé åðïìÝíùò ìïíïìéÜò êëçñïíïìåß üëåò ôéò éäéüôçôåò áõôÞò åðïìÝíùò êáé ôçí KaloGataki. Ôáõôü÷ñïíá åðéôñÝðåé óôïí ðñïãñáììáôéóôÞ íá ðñïóèÝóåé óôç íÝá êëÜóç éäéüôçôåò ðïõ äåí âëÝðåé ç ðñüãïíç êëÜóç. Ãéá ðáñÜäåéãìá ôçí éäéüôçôá:
    Oura ôýðïõ TOura ï ïðïßïò ðáßñíåé ôéò ôéìÝò: gStraviOura, gHorisOura, gNormalOura

    Ðåñéôôü íá ðñïóèÝóù üôé ç éäÝá ôùí objects åßíáé áðüññïéá ôùí öïâåñþí records ôçò Pascal. Ôï çëéáêü ìïõ ðñüãñáììá âáóßóèçêå óå 3 ôÝôïéá records ðïõ äüìçóá üðùò TSunData, THliakosStruc, TBoilerStruc. Ãéá ðáñÜäåéãìá ç èåñìïêñáóßá åîüäïõ áðü ôïí óõëëÝêôç åßíáé éäéüôçôá ôïõ THliakosStruc Þ ç èåñìïêñáóßá åéóüäïõ óôïí åíáëëÜêôç ôïõ boiler åßíáé éäéüôçôá ôïõ TBoilerStruc

    Äõóôõ÷þò üìùò.... Ó' áõôüí ôïí êüóìï ôïí êáêü, ôïí ÷éëéïìðáëëùìÝíï, ü,ôé êáëü ðåèáßíåé!


    ÖåõãÜôïò ÐåéñáôÞò


    Óôßãìá ÌáóôñïêáðåôÜíéïõ

  7. #7
    ÌÝëïò
    Çìåñïìçíßá åããñáöÞò
    Mar 2012
    ÈÝóç
    Athens, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    99
    Ðñáãìáôéêüò êüóìïò
    ÈÝëù íá âÜëù Ýíá êáëïñéöÝñ óôï óðßôé ìïõ. ÐÝíôå óùìáôÜêéá êáé Ýíá ìðüéëåñ èá âÜëù. ¸÷ù ìÜóôïñá äéáìÜíôé. Ãéáôß íá ðëçñþóù ôïí ìç÷áíïëüãï ?

    Áêïýãåôáé ãíþñéìï ?. Éó÷ýåé ðáíôïý. Ç ìåèïäïëïãßá õðÜñ÷åé êáé áí èÝëïõìå ôçí ÷ñçóéìïðïéïýìå. «Ôé Ý÷åéò êáñäéÜ ìïõ êáé áíáóôåíÜæåéò. Ôï êåöÜëé ôá êÜíåé ôï êåöÜëé ôá ôñáâÜåé» üðùò ìïõ Ýëåãå, áðü ìéêñü, ï ðáôÝñáò ìïõ.

    ¸óôù üôé ðñÝðåé íá êáôá÷ùñÞóïõìå ôá óôïé÷åßá åíüò ðåëÜôç óýìöùíá ìå ôçí ìåèïäïëïãßá. ¸÷ïõìå åôïéìÜóåé ôçí PDC êëÜóç ÔCustomer ðïõ ðåñéãñÜöåé ôï ôé åßíáé ï ðåëÜôçò.


    TCustomer = class
    private
    FCUSTID:Integer;
    FFNAME:String;
    FLNAME: String;
    FLASTPICKUP: String;
    FAFM: String;
    FADDRSTR: String;
    FADDRNUM: String;
    FADDRZIP: String;
    FADDRCITY: String;
    FTEL1: String;
    FTEL2: String;
    FCOMPANY: String;
    FPROFESSION: String;
    FDOY: String;
    Protected
    // äçìéïõñãåß íÝá Éd ãéá ôïí ðåëÜôç
    procedure SetCustId(value:integer);
    // ÅëÝã÷åé áí ôï ÁÖÌ ðïõ êáôá÷ùñïýìå åßíáé óùóôü.
    procedure SetÁFM(const value:string);

    public
    Property CUSTID:Integer read FCustId write SetCustId;
    Property FNAME:String read FFName write FFname;
    Property LNAME:String read FLName write FLname;
    Property AFM:String read FAFM write SetAFM;
    ...
    End;

    ¸÷ïõìå åôïéìÜóåé êáé ôçí DMC êëÜóç
    TDMCustomer =class(ÔCustomer)
    Public
    // Äçìéïõñãåß Ýíá ðåëÜôç êáé áíáêáëåß ôá óôïé÷åßá ôïõ áðü ôçí âÜóç.
    Constructor Create(ID:integer);
    Procedure Save;
    Procedure Update;
    End;

    ¸÷ïõìå ó÷åäéÜóåé ôçí ïèüíç êáôá÷þñçóçò

    https://picasaweb.google.com/1078235...03951973481138

    Ç TCustForm åðéêïéíùíåß ìå ôçí ÔCust ãéá íá åìöáíßóåé Þ íá ìåôáâÜëåé ôá óôïé÷åßá åíüò ðåëÜôç. Ç TCust ìå ôçí TDMCust ãéá íá áíáêáëÝóåé Þ íá áðïèçêåýóåé ôá äåäïìÝíá óôçí âÜóç äåäïìÝíùí.

    Áò äïýìå ôéò «åõêïëßåò» ôïõ Delphi. Ôá data aware components åðéôñÝðïõí

    1. Ôçí óýíäåóç ìå ðßíáêá ôçò âÜóçò êáé ïñéóìü ôùí ÷áñáêôçñéóôéêþí ôçò ãéáëáíôæß êëÜóçò, áðü üëá ôá ðåäßá ôçò âÜóçò.
    2. Ôçí äõíáôüôçôá ìåôáâïëÞò ôùí äåäïìÝíùí
    3. Ôçí áõôüìáôç åíçìÝñùóç ôçò âÜóçò.

    Áò áöÞóïõìå ôéò äéá÷åéñéóôéêÝò åöáñìïãÝò êáé áò äïýìå ôçí åöáñìïãÞ ôïõ ðåéñáôÞ.



    Ôá ïõóéáóôéêÜ äçëþíïõí ôá objects. Ðïëý ðåñéóóüôåñï üôáí õðÜñ÷ïõí êáé öõóéêÜ. Ôá ñÞìáôá äçëþíïõí ìåèüäïõò/ëåéôïõñãßåò.

    Ï Þëéïò áêôéíïâïëåß óõãêåêñéìÝíç åíÝñãåéá áíÜëïãá ìå ôçí ðåñéï÷Þ êáé ôçí þñá.

    TSunEnergy = class
    Public
    Function EnergyFlowouble; // áêôéíïâïëåß..
    Property Month
    Property Day
    End;

    Ï çëéáêüò óõëëÝêôçò áðïöïñÜ ôçí åíÝñãåéá, êáé ôçí ìåôáôñÝðåé óå èåñìéêÞ

    TSolarPanel = class
    public
    property Slope :double; //êëßóç
    property SouthDeviation:double; // Áðüêëåéóç áðü ôïí Íüôï
    property Surface:double; // óõëëåêôéêÞ åðéöÜíåéá
    property Flow:double; // Lt/h
    property GlycolePerc : double;
    end;

    Ôï boiler ìÝóù ôïõ åíáëëÜêôç ãéá ôïí çëéáêü, æåóôáßíåé ôï íåñü ðïõ ðåñéÝ÷åé

    ÔBoiler = class
    public
    property Volume:double;
    property AverageDaylyConsuption:double;
    property WaterTemperature:double;
    property SolarHeatExchangeSurface :double; // m2
    end;

    H êëÜóç TCalculator õðïëïãßæåé
    Ýíá óýíïëï ôéìþí,

    ãéá ìßá çìåñïìçíßá aDate,
    áðü þñá FromTime Ýùò ToTime ìå âÞìá step ëåðôÜ
    ãéá ôïí óõëëÝêôç aSolarPanel
    êáé ôï boiler aBoiler.


    TCalculator = class
    procedure Calc(aDate:TDate; // ãéá óõãêåêñéìÝíç çìåñïìçíßá
    FromTime, ToTime:TTime; step: integer;
    aSolarPanel:TSolarPanel;
    aBoiler:TBoiler);
    property CalcCount:integer;
    property Time[index:integer]:TTime; //
    property SunHeight[index:integer]:degrees;
    property SunAzimou8io [index:integer]:degrees;
    property BoilerTemp [index:integer]:double;
    property CollectorTempIn [index:integer]:double;
    property CollectorTempOut [index:integer]:double;
    ...
    end;


    Ôá áðïôåëÝóìáôá åìöáíßæïíôáé óôçí ïèüíç

    For i:=0 to Calculator.CalcCount do
    begin
    Grid[0,i]:= FormatTime(Calculator.Time[i]);
    Grid[1,i]:= FormatDegrees(Calculator.SunHeight [i]);
    Grid[2,i]:= FormatDegrees(Calculator.SunAzimou8io [i]);
    Grid[3,i]:= Format('%.1f',[Calculator.BoilerTemp [i]]);
    Grid[4,i]:= Format('%.1f',[Calculator.CollectorTempIn[i]]);
    Grid[5,i]:= Format('%.1f',[Calculator.CollectorTempOut[i]]);
    ...
    End;

    êÜèå êëÜóç ïñßæåôáé óå îå÷ùñéóôü unit. Ç öüñìá ãíùñßæåé ìüíï ôïí Calculator.


    Åäþ, óõíÜäåëöïé ìç÷áíïëüãïé, ÷ñåéÜæïìáé ôçí âïÞèåéá óáò ãéá ôï ïëïêëçñþóïõìå ôï ìïíôÝëï. ×ñåéÜæïìáé ôéò ðñïôÜóåéò óáò ãéá ôá åðéðëÝïí ÷áñáêôçñéóôéêÜ ôùí êëÜóåùí êáé ôéò ìåèüäïõò/õðçñåóßåò ðïõ ðáñÝ÷ïõí.

    ÕÃ.
    1. Åãñáöá êáé áöïõ ôåëåßùóá åßäá ôçí áðÜíôçóç ôïõ ðåéñáôÞ. Ðñïêýðôåé áðüëõôç óýìðôùóç óôçí áíÜëõóç. Ìðïñåß íá ôïí êáôáöÝñù íá ôï îáíáãñÜøåé ìå objects

    2. Ðåñßìåíá ïôé èá õðÞñ÷áí êÜðïéïé, ðïõ èá äéáöùíïýóáí ìå ôïí ïñéóìü ôïõ THuman ìå ìüíï ëåéôïõñãßá ôçí øÞöï. ÕðÞñ÷áí Üëëåò ðïëý ðéï óçìáíôéêÝò (Åñùôáò, äéáíüçóç, åðéêïéíùíßá). [:0]


  8. #8
    ÌÝëïò
    Çìåñïìçíßá åããñáöÞò
    Mar 2012
    ÈÝóç
    Athens, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    99
    quote:
    «ðñþôï êáëïêáßñé ìåôÜ áðü 18 ÷ñüíéá ðïõ äåí ðÞñá ôï portable ðáñáìÜó÷áëá óôéò äéáêïðÝò, Üñá Íßêç ìåãÜëç...»
    Äåí öáíôÜæïìáé, ç ìåãÜëç Íßêç íá åßíáé êÜðïéá ðáëéÜ óõììáèÞôñéá ? [:I]

  9. #9
    ÅîÝ÷ïí ìÝëïò
    Çìåñïìçíßá åããñáöÞò
    Jun 2008
    ÈÝóç
    Glyfada, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    3,101
    quote:Äåí öáíôÜæïìáé, ç ìåãÜëç Íßêç íá åßíáé êÜðïéá ðáëéÜ óõììáèÞôñéá ?
    ÐÜëé èá áðáíôÞóù áðü pda ãéáôß «îÝñåéò íá ìå ðñïêáëåßò»...
    1. Ç Íßêç ç óõììáèÞôñéá ðÜåé, ÷Üèçêå! Êáé êáëýôåñá ðïõ ÷Üèçêå ãéá íá ìç ìå äåé Ýôóé üðùò ìå êáôÜíôçóå ôï Üëëï ìïõ ðÜèïò (äåßãìá ðáñáðÜíù) ìå ôçí 25÷ñïíç ðáñáìïíÞ ìïõ óå êáñÝêëá ìðñïóôÜ áðü ôïí äáßìïíá ðïõ ëÝãåôáé PC. Åêôïîåýèçêå ï íïõò êáé ãêñåìïôóáêßóèçêå ôï óþìá! Óõí 60 êéëÜ! Êáëýôåñá íá ìç ìå äåé ç Íßêç äéüôé èá ÷Üóåé ðÜóá éäÝá ãéá ôïí ãíþñéìü ôçò êáé ðïëõáãáðçìÝíï óõìöïéôçôÞ ðïõ Þîåñå íá ôçí ôáîéäåýåé äß÷ùò ôá objects ôçò Pascal ìéáò êáé ôüôå äåí ôá ãíþñéæá êáí.
    ÐÑÏÓÏ×Ç ëïéðüí óå óáò ôïõò íåþôåñïõò. Ðñþôá ôï óþìá êáé ìåôÜ ï íïõò! Êáìßá ãíþóç äåí åßíáé áõôïóêïðüò üóï êáé íá ìáò êáôáîéþíåé. ¢ëëùóôå åìåßò ïé ¸ëëçíåò ôï ãíùñßæïõìå êáëÜ ìå ôï ãíùóôü «íïõò õãéÞò åí óþìáôé õãéÞ»
    2. Ç Íßêç ãéá ôçí ïðïßá ìéëÜù åßíáé êé áõôÞ èõëõêïý ãÝíïõò êáé èá ìðïñïýóå íá åßíáé ìéá ùñáßá ãõíáßêá ãéá íá ìïõ êåíôñßóåé ôï åíäéáöÝñïí íá êëåßóù ðëÝïí ôïí «äáßìïíá». Ôï Ý÷ù âÜëåé óôïß÷çìá ìå ôïí åáõôü ìïõ êáé èá ôï ðåôý÷ù. ÈÝëù íá ðÜñù ðßóù áðü ôá 60 êéëÜ üóá ìðïñÝóù êé áò ìåßíïõí üóá ìåßíïõí. ÉêáíÜ üìùò íá Ýëîïõí ôçí Üëëç Íßêç, ôçí ðáëéÜ ìïõ óõììáèÞôñéá

    Óõíåðþò:
    quote:Ìðïñåß íá ôïí êáôáöÝñù íá ôï îáíáãñÜøåé ìå objects
    ÊÜíå ëßãï õðïìïíÞ. ¸÷ù ôïí ãéï ìïõ ðñùôïåôÞ óôï ÅÌÐ óðáóéêëÜêé êáíïíéêü ìå äåêÜñéá êé Ýôóé. Êáé óôïí ðñïãñáììáôéóìü! Ìüíï ðïõ óôïõò Ìç÷áíïëüãïõò ôïõò «áëùíßæïõí» ìå ôçí Fortran êáé Ý÷åé ôá íåýñá ôïõ áí êáé ôïõ ëÝù íá ìÜèåé êé áõôÞí. ¸ôóé êé áëëéþò óôï íá ãñÜøåéò êþäéêá äåí ìåôñÜ ç ãëþóóá áõôÞ êáèåáõôÞ üóï ôï ôáëÝíôï óïõ íá óõíèÝôåéò «ãëùóóéêïýò ìç÷áíéóìïýò» ïé ïðïßïé ôñÝ÷ïõí Üøïãá êáé äß÷ùò ðñïâëÞìáôá.
    Èá óå öÝñù óå åðáöÞ ìáæß ôïõ êáé öéÜîôå üóá objects ôñáâÜåé ç üñåîÞ óáò. Åßíáé C++áêéáò áëëÜ ôïí Ý÷ù ðéÜóåé íá õðïêëÝðôåé ôéò óõíáñôÞóåéò ôïõ SysUtils


    Óôßãìá ÌáóôñïêáðåôÜíéïõ

  10. #10
    ÌÝëïò
    Çìåñïìçíßá åããñáöÞò
    Mar 2012
    ÈÝóç
    Athens, , Greece.
    Éäéüôçôá:
    Áãíùóôç
    ÁðáíôÞóåéò
    99
    ÁðáíôÜù áðü ôçí âüñåéá Åýâïéá, ìå ôï Üñôé áðïêôçèÝí Aurdino Ýôïéìï ãéá ðåéñÜìáôá.
    quote:
    ¸÷ù ôïí ãéï ìïõ ðñùôïåôÞ óôï ÅÌÐ óðáóéêëÜêé êáíïíéêü ìå äåêÜñéá êé Ýôóé.
    ÌÜëëïí ï ãéïò óïõ äåí åß÷å ðïõ íá ìïéÜóåé. Åý÷ïìáé óôïí ëåâÝíôç óïõ, êÜèå åðéôõ÷ßá. Åëðßæù ìüíï íá ìçí ìåëåôÜåé ìüíï ãéá heat tanks áëëÜ íá åêìåôáëëåõèåß óôï Ýðáêñï êáé ôï äéáèÝóéìï ïéêïãåíåéáêü think tank.

    "ÁéÝí áñéóôåýåéí êáé õðåßñï÷ïí Ýììåíáé Üëëùí, ìçäÝ ãÝíïò ðáôÝñùí áéó÷õíÝìåí».
    ÐÜíôá íá åßóáé ðñþôïò êáé áíþôåñïò áðü ôïõò Üëëïõò êáé íá ìçí íôñïðéÜæåéò ôç ãåíéÜ ôùí ðñïãüíùí. ÉëéÜäá, Æ 208

    quote:
    Ìüíï ðïõ óôïõò Ìç÷áíïëüãïõò ôïõò «áëùíßæïõí» ìå ôçí Fortran êáé Ý÷åé ôá íåýñá ôïõ áí êáé ôïõ ëÝù íá ìÜèåé êé áõôÞí
    http://www.computer.org/csdl/mags/co...012070008.html

    quote:
    ¸ôóé êé áëëéþò óôï íá ãñÜøåéò êþäéêá äåí ìåôñÜ ç ãëþóóá áõôÞ êáèåáõôÞ üóï ôï ôáëÝíôï óïõ íá óõíèÝôåéò «ãëùóóéêïýò ìç÷áíéóìïýò» ïé ïðïßïé ôñÝ÷ïõí Üøïãá êáé äß÷ùò ðñïâëÞìáôá.
    Ç ãëþóóá åßíáé ôï åñãáëåßï. ÐñÝðåé íá õðïóôçñßæåé ôéò áðáéôïýìåíåò äõíáôüôçôåò. Ç fortran, ç C êáé ç turbo pascal äåí õðïóôçñßæïõí ôïõò ìç÷áíéóìïýò ãéá íá äçëþóåéò êëÜóåéò êáé íá õëïðïéÞóåéò (instantiate) áíôéêåßìåíá.

    Ç óýíèåóç, áðü áðëïýóôåñá Þ äïìéêÜ áíôéêåßìåíá ïäçãïýí óå êáôáóêåõÝò, ãëùóóéêÝò Þ ìç, ðïõ åðéëýïõí Ýíá ðñüâëçìá. (bottom-up).

    Ç áíÜëõóç, «óðÜåé» Ýíá óýíèåôï áíôéêåßìåíï Þ ðñüâëçìá, óôá óõóôáôéêÜ ôïõ êáé ôï åðéëýåé åðéëýïíôáò ôá åðéìÝñïõò ìéêñüôåñá ðñïâëÞìáôá. (top-down)

    quote:
    Ðåñéôôü íá ðñïóèÝóù üôé ç éäÝá ôùí objects åßíáé áðüññïéá ôùí öïâåñþí records ôçò Pascal. Ôï çëéáêü ìïõ ðñüãñáììá âáóßóèçêå óå 3 ôÝôïéá records ðïõ äüìçóá üðùò TSunData, THliakosStruc, TBoilerStruc. Ãéá ðáñÜäåéãìá ç èåñìïêñáóßá åîüäïõ áðü ôïí óõëëÝêôç åßíáé éäéüôçôá ôïõ THliakosStruc Þ ç èåñìïêñáóßá åéóüäïõ óôïí åíáëëÜêôç ôïõ boiler åßíáé éäéüôçôá ôïõ TBoilerStruc
    Óõìöùíþ, áëëÜ ðáñÝëåéøåò ôéò ñïõôßíåò ðïõ ÷ñçóéìïðïéïýí ôá records. Áõôü ðïõ ðñïêýðôåé êáé áðü ôá äýï, ôï object äçëáäÞ, ëåéôïõñãåß óáí êÜôé åíéáßï. Åíóùìáôþíåé (encapsulates) äåäïìÝíá êáé õðïëïãéóìïýò.

    ÅðéóôñÝöù, óôï ðñüãñáììÜ óïõ ãéáôß áðïôåëåß, ìå äåäïìÝíï ôï êïéíü, ôï êáëýôåñï ðáñÜäåéãìá áëëáãÞò áðü äïìçìÝíï óå áíôéêåéìåíïóôñåöÞ ðñïãñáììáôéóìü.

    To åã÷åéñßäéï ôùí Çëéáêþí óõóôçìÜôùí http://www.monachos.gr/forum/topic.asp?TOPIC_ID=3832 áðïôåëåß ìéá ðïëý êáëÞ ðåñéãñáöÞ ôùí öáéíïìÝíùí. (stom åõ÷áñéóôþ)

    Ï Þëéïò áêôéíïâïëåß óõãêåêñéìÝíç åíÝñãåéá áíÜëïãá ìå ôçí ðåñéï÷Þ êáé ôçí þñá.


    Êþäéêáò:
    TSunEnergy = class
    
    Public
    
    // ÇëéáêÞ åíÝñãåéá óôï óõãêåêñéìÝíï GeoPlatos, çìÝñá êáé þñá óå W/m2
        function Energy:Double; overload; 
    // ìå ìåôáâëçôÞ ôçí þñá óå W/m2
        function Energy(aTime:integer):Double; overload; 
    
        property Time:integer; // seconds since midnight
        property Month:integer;
        property Day:integer;
        property GeoPlatos:double;
        property SunPerc:double;// ÓõíôåëåóôÞò çëéïöÜíåéáò
    End;
    Ç ñïÞ åíÝñãåéáò åßíáé ôï ìüíï óôïé÷åßï ôçò çëéáêÞ áêôéíïâïëßáò ðïõ åíäéáöÝñåé Ýíá panel. Ôá õðüëïéðá óôïé÷åßá åßíáé ðáñÜìåôñïé ðïõ ÷ñåéÜæïíôáé ãéá ôïí õðïëïãéóìü ôçò ñïÞò åíÝñãåéáò.

    Ç äÞëùóç ôçò êëÜóçò ãßíåôáé óôï áíåîÜñôçôï uSunEnergy.pas


    Ï çëéáêüò óõëëÝêôçò áðïöïñÜ ôçí åíÝñãåéá, êáé ôçí ìåôáôñÝðåé óå èåñìéêÞ ìÝóù ôïõ ñåõóôïý ôïõ êëåéóôïý êõêëþìáôïò.

    Êþäéêáò:
    TSolarPanel = class
    public
    
        function Energy(EnergyIn):double; // óõíïëéêÞ ãéá üëç ôçí åðéöÜíåéá kWh
        function Flow:double;    // ñïÞ Lt/h
    
        property SolarAbsorbtion:double; // ðïóïóôü áðïññüöçóçò çëéáêÞò åíÝñãåéáò
        property Slope :double; //êëßóç çëéáêïý
        property SouthDeviation:double; // Áðüêëåéóç áðü ôïí Íüôï
        property Surface:double; // åìâáäüí óõëëåêôéêÞò åðéöÜíåéáò
    
        property Efficiency:double; // áðüäïóç çëéáêïý
    
        property GlycolePerc : double;
        property WaterInTemperature:double;  // èåñì. åéóüäïõ êëåéóôïý êõêëþìáôïò
        property WaterOutTemperature:double; // èåñì. åîüäïõ êëåéóôïý êõêëþìáôïò
    
    end;
    H TSolarPanle.Energy äÝ÷åôáé óáí ðáñÜìåôñï ôçí åéóåñ÷üìåíç åíÝñãåéá êáé õðïëïãßæåé ôçí áðïäéäüìåíç åíÝñãåéá. Ç þñá ôçò çìÝñáò åßíáé ðáñÜìåôñïò ôçò TSunEnergy êáé ü÷é ôïõ panel.


    Ç äÞëùóç ôçò êëÜóçò ãßíåôáé óôï áíåîÜñôçôï uSolarPanel.pas

    Ôï boiler ìÝóù ôïõ åíáëÜêôç ãéá ôïí çëéáêü Þ ôïõ åíáëÜêôç ãéá ôïí ëÝâçôá Þ ôçí çëåêôñéêÞ áíôßóôáóç, æåóôáßíåé ôï íåñü ðïõ ðåñéÝ÷åé

    Êþäéêáò:
    THeatSource = (hsSolarPanel, hsBurner, hsElectricity)
    
    ÔBoiler = class
    
    public
    
    // êÜíù ôçí ðáñáäï÷Þ ïôé ìüíï ìßá ðçãÞ åíÝñãåéáò ôñïöïäïôåß ôï boiler
    
        function Heat(inEnergy:double; from:THeatSource):double; // óôéãìéáßá éó÷ýò Kw
    
        function AccumulatedEnergy:double; // áðü ôï ðåñéå÷üìåíï æåóôü íåñü Kwh
    
        function SolarFraction:double; // ðïóü åíÝñãåéáò áðï çëéï / ðïóü åíÝñãåéáò êáôáíÜëùóçò
    
        property WaterVolume:double;
        property AverageDayConsuption:double; // lt 
        property WaterInTemperature:double;    // áíÜëïãá ìå ôçí åðï÷Þ.
        property WaterOutTemperature:double;  // áíÜëïãá ìå ôçí åðï÷Þ.
    
        property SolarHeatExchangeSurface :double;   // m2
        property BurnerHeatExchangeSurface :double; // m2
    
    end;
    To boiler óõóóùñåýåé èåñìüôçôá êáé áðïäßäåé ëßôñá ÆÍ× óå óõãêåêñéìÝíç èåñìïêñáóßá óôçí ìïíÜäá ôïõ ÷ñüíïõ.

    Ç äÞëùóç ôçò êëÜóçò ãßíåôáé óôï áíåîÜñôçôï uBoiler.pas


    ¼ëá ôá objects ó÷åäéÜóôçêáí ãéá íá äßíïõí óôéãìéáßåò ôéìÝò. Ãéá íá ðáñÜîïõìå ôá äéáãñÜììáôá áêôéíïâïëßáò èá ðñÝðåé íá êáëÝóïõìå ôçí TSunEnergy.Energy(aTime) ìå üñéóìá ÷ñüíïõò ðïõ äéáöÝñïõí ìåôáîý ôïõò êáôÜ 15 min.

    H êëÜóç TCalculator ãíùñßæåé üëá ôá ðáñáðÜíù áíôéêåßìåíá (TSunEnergy, TSolarPanel, ÔBoiler) âëÝðåé (uses) ôá uSunEnergy.pas, uSolarPanel.pas, uBoiler.pas êáé õðïëïãßæåé

    Ýíá óýíïëï ôéìþí,

    ãéá ìßá çìåñïìçíßá aDate,
    áðü þñá FromTime Ýùò ToTime ìå âÞìá step ëåðôÜ
    ãéá ôïí óõëëÝêôç aSolarPanel
    êáé ôï boiler aBoiler.

    Êþäéêáò:
    TCalculator = class
    
        procedure Calc(aDate:TDate; // ãéá óõãêåêñéìÝíç çìåñïìçíßá
                       FromTime, ToTime:TTime; step: integer;
                       aSolarPanel:TSolarPanel;
                       aBoiler:TBoiler);
        property CalcCount:integer;
        property Time[index:integer]:TTime; //
        property SunHeight[index:integer]:degrees;
        property SunAzimou8io [index:integer]:degrees;
        property BoilerTemp [index:integer]:double;
        property CollectorTempIn [index:integer]:double;
        property CollectorTempOut [index:integer]:double;
    ...
    end;
    Óôï åðüìåíï post èá áíáöåñèþ óôá threads, ôçí âáóéêÞ ïíôüôçôá ðïõ åêôåëåß ôï CPU.


Äéêáéþìáôá áðÜíôçóçò

  • You may not post new threads
  • ÄÅÍ Ý÷åôå ôï äéêáßùìá áðÜíôçóçò
  • You may not post attachments
  • ÄÅÍ ìðïñåßôå íá åðåîåñãáóôåéôå ôéò áðáíôçóåéò óáò
  •  
  • BB code is Áíïéêôü
  • Smilies are Áíïéêôü
  • [IMG] code is Áíïéêôü
  • [VIDEO] code is Êëåéóôü
  • HTML code is Êëåéóôü