Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Κλάσεις.. Μέθ..αδοι.. πεδία.. πεδάκια!!!

Îåêßíçóå áðü ôï ìÝëïò tommaσ. Τελευταία δημοσίευση από το μέλος Αλέξανδρος Δημητρίου στις 20-10-2007, 13:55. Υπάρχουν 37 απαντήσεις.
Σελίδα 1 από 3 (38 εγγραφές)   1 2 3 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  17-04-2006, 17:39 11958

    Confused [8-)] Κλάσεις.. Μέθ..αδοι.. πεδία.. πεδάκια!!!

    Hi!

    Πραγματικά τα έχω λίγο μπερδεμένα στο μυαλό μου σχετικά με τις κλάσεις(method,fields,properties,events.κ.τ.λ.)Εγώ σαν μοναχικός developer(που λέει ο λόγος) άκουγα γύρο μου ότι είναι "καλό και οργανωμένο κτλ.." να αναπτύξεις το έργο σου με κλάσεις.

     Τι να κάνω και εγώ έκανα την πρώτη ερώτηση μου Στο dotnetzone (http://www.dotnetzone.gr/cs/forums/9929/ShowPost.aspx )Εκείνο τον καιρό λόγο ότι προσπαθούσα να μάθω καλά την c# δεν έδωσα σημασία. Πριν λίγο καιρό αγόρασα ένα βιβλίογια την c#(για προχωρημένους) αλλά που εγώ ώμος στο κεφάλαιο για τις κλασεις δεν καταλάβαινα Χρηστό!!

    !Έτι αποφάσισα να κοιτάξω το ξανά το post!Για να είμαι ειλικρινείς με μπέρδεψε περισσότερο .Γιατί τώρα δεν είχα να κάνω με θεωρία αλλά με πρακτική , και δεν μπορούσα να καταλάβω που πρέπει να χρησιμοποιήσω properties που events και τι είναι fields.

    Πιστεύοντας πως θα τα ξεκαθαρίσω , άρχισα να φτιάχνω ένα πρόγραμμα(με την βοήθεια του class diagram) αλλά για οτιδήποτε σκεφτόμουν ότι ήθελα να κάνω ΤΟ ΜΟΝΟ που μου ταίριαζε ήταν μια method!!!!!!!!!Τα είπα τόσο αναλυτικά τα πράγματα, γιατί πιστεύω ότι θα είναι δύσκολη η λύση του μέσα στο μυαλό μου

  •  17-04-2006, 23:28 11968 σε απάντηση της 11958

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Λοιπόν, θα σου δώσω παραδείγματα, απλά και όμορφα, μέσα απο την ζωή..

    Φαντάσου τον εαυτό σου σαν μια κλάση..Εσύ σαν κλάση, έχεις όνομα,επίθετο,τόπο γέννησης,όνομα πατέρα,τηλέφωνο κλπ κλπ..Όλα αυτά αποτελούν properties της κλάσης του εαυτού σου..Όλα αυτά είναι γνωστά στο κοινό, όποτε είναι public fields της κλάσης του εαυτού σου..Όμως, το αν εσύ, γουστάρεις την Μαρία αντί για την Γιώτα, είναι μόνο μέσα στο μυαλό σου, οπότε, αυτό είναι ενα private field της κλάσης του εαυτού σου, το οποίο εμείς οι άλλοι, δεν μπορούμε να το δούμε..
    Σε κώδικα εσύ θα ήσουν κάτι τέτοιο:
    class tomkarachris {
    private string _firstname,_lastname,_telephone,_kopela;
    public string Firstname {
    get {
    return _firstname;
    }
    set {
    _firstname = value;
    }
    }
    public string Lastname {
    get {
    return _lastname;
    }
    set {
    _lastname = value;
    }
    }
    public string Telephone {
    get {
    return _telephone;
    }
    set {
    _telephone = value;
    }
    }
    private string Kopela {
    get {
    return _kopela;
    }
    set {
    _kopela = value;
    }
    }
    }


    Τώρα, όταν η μαμά σου σε έφερνε στον κόσμο, τότε έκανε κατι τέτοιο:
    Tomkarachris mySelf = new Tomkarachris();
    mySelf.Firstname = "Tom";
    mySelf.Lastname = "Karachris";
    mySelf.Telephone = "210 9599000";

    έφτιαξε δηλαδή ένα αντικείμενο, το οποίο ονομάζεται mySelf το οποίο προήλθε απο την κλάση TomKarachris..Για να είμαστε πιο σωστή, θα ονομάσουμε την κλάση μας πλέον Human,καθώς όλοι έχουμε τα ίδια properties (όνομα,επίθετο,τηλέφωνο και κοπέλα)..Άρα ο κώδικας μας θα γίνει πλέον:
    class Human {
    private string _firstname,_lastname,_telephone,_kopela;
    public string Firstname {
    get {
    return _firstname;
    }
    set {
    _firstname = value;
    }
    }
    public string Lastname {
    get {
    return _lastname;
    }
    set {
    _lastname = value;
    }
    }
    public string Telephone {
    get {
    return _telephone;
    }
    set {
    _telephone = value;
    }
    }
    private string Kopela {
    get {
    return _kopela;
    }
    set {
    _kopela = value;
    }
    }
    }
    Human aHuman = new Human();
    aHuman.Firstname = "Tom";
    aHuman.Lastname = "Karachris";
    aHuman.Telephone = "210 9599000";


    Άν θέλουμε πλέον να δούμε το όνομά σου θα ζητήσουμε απλά απο την κλάση aHuman τα properties Firstname και Lastname, κάνοντας
    string yourName = aHuman.Firstname + " " + aHuman.Lastname;

    Θα μπορούσαμε όμως πολύ απλά να φτιάξουμε μια method η οποία θα μας επιστρέφει κατευθείαν το όνομά σου, χωρίς να χρειάζεται να το "φτιάξουμε εμείς"..
    Προσθέτουμε λοιπόν στην κλάση την method GetFullName(); και ο κώδικάς μας γίνεται πλέον:
    class Human {

    private string _firstname,_lastname,_telephone,_kopela;

    public string Firstname {
    get {
    return _firstname;
    }
    set {
    _firstname = value;
    }
    }

    public string Lastname {

    get {

    return _lastname;

    }

    set {

    _lastname = value;

    }

    }

    public string Telephone {

    get {

    return _telephone;

    }

    set {

    _telephone = value;

    }

    }

    private string Kopela {

    get {

    return _kopela;

    }

    set {

    _kopela = value;

    }

    }
    public string GetFullName() {
    //To this αναφέρεται στο αντικείμενο απο το οποίο καλούμε, γιατι το αντικείμενο δεν μπορεί να ξέρει τι όνομα του δώσαμε (το δικό μας λέγεται aHuman),
    //οπότε αναφερόμαστε στον εαυτό του, σαν this
    //Αν έγραφες aHuman._firstname εδώ, θα έπερνες μήνυμα λάθους απο τον compiler
    return this._firstname + " " + this._lastname;
    }

    }


    Με αυτό τον κώδικα πλέον θα μπορούσαμε να κάνουμε απλά:
    string yourName = aHuman.GetFullName();
    και να πάρουμε το όνομά σου.

    Τώρα, σε κάποιον πολύ καλό σου φίλο, θέλεις να πεις ποια είναι η κοπέλα που θέλεις πραγματικά, οπότε, θα φτιάξεις μια method η οποία θα επιστρέφει το όνομα της κοπέλας, μόνο αν του περάσει σαν παράμετρο ότι είναι ο καλύτερος σου φίλος.. άρα προσθέτουμε την method MyGirlIs(bool bestfriend); και ο κωδικας της κλάσης μας γίνεται:

    class Human {

    private string _firstname,_lastname,_telephone,_kopela;

    public string Firstname {
    get {
    return _firstname;
    }
    set {
    _firstname = value;
    }
    }

    public string Lastname {

    get {

    return _lastname;

    }

    set {

    _lastname = value;

    }

    }

    public string Telephone {

    get {

    return _telephone;

    }

    set {

    _telephone = value;

    }

    }

    private string Kopela {

    get {

    return _kopela;

    }

    set {

    _kopela = value;

    }

    }
    public string GetFullName() {
    //To
    this αναφέρεται στο αντικείμενο απο το οποίο καλούμε, γιατι το
    αντικείμενο δεν μπορεί να ξέρει τι όνομα του δώσαμε (το δικό μας
    λέγεται aHuman),
    //οπότε αναφερόμαστε στον εαυτό του, σαν this
    //Αν έγραφες aHuman._firstname εδώ, θα έπερνες μήνυμα λάθους απο τον compiler
    return this._firstname + " " + this._lastname;
    }
    public string MyGirlIs(bool bestfriend) {
    if (bestfriend) {
    return this.Kopela;
    } else {
    return "Σιγά μην σου πώ!";
    }
    }

    }


    Άρα αν θέλουμε να μάθουμε το όνομα της κοπέλας που θέλεις και είμαστε καλοί σου φίλοι, μπορούμε απλά να κάνουμε:
    string girlName = aHuman.MyGirlIs(true);

    και να μάθουμε το όνομα.
    Όπως κατάλαβες, οτιδήποτε αναφέρεται σαν private δεν "φαίνεται" όταν δημιουργηθεί το αντικειμενο ενώ ότι είναι public φαίνεται..
    Σου αφηνώ να ψάξεις για το πως μπορείς εσύ να δώσεις τιμή στο property "Kopela"..
    Να μας δώσεις δηλαδή το όνομα της κοπέλας σαν τιμή στο property..

    Ελπίζω να βοήθησα αρκετά, ότι άλλο θες, ποστ..Δεν μπορούσα να βρω πιο ρεαλιστικά παραδείγματα!! Wink [;)] Smile [:)]

    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  17-04-2006, 23:31 11969 σε απάντηση της 11968

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Btw, δεν σου έγραψα για event γιατί θα μπεύρδευες τα μπούτια σου, αν κατανοήσεις καλά αυτά, μετα τα άλλα είναι εύκολα Wink [;)] ..
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  18-04-2006, 01:20 11972 σε απάντηση της 11969

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Πραγματικά τι να πω, έμεινα με το παράδειγμα, το βρήκα πρωτότυπο, διασκεδαστικό και πολύ σωστό. Πολύ καλό...

    Συνήθως όμως η έννοια του αντικειμενοστραφούς προγραμματισμού είναι αρκετά δύσκολη και θέλει χρόνο για να μπορείς να δεις και όλη την εικόνα αλλά και να μπορείς να την υλοποιείς με βάση τα εργαλεία που σου δίνονται. Σίγουρα όμως το παράδειγμα αυτό θα ήταν από τα πρώτα που θα έπρεπε να λέγονται.
  •  18-04-2006, 11:07 11982 σε απάντηση της 11972

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Πολύ καλό παράδειγμα! Συγχαρητήρια! Δεν θα μπορούσα να σκεφτώ καλύτερο και πιό διασκεδαστικό παράδειγμα από αυτό για τη επεξήγηση όσων ρωτησε ο Θωμάς! Ελπίζω να ήταν κατανοητό και στους άλλους, πιστεύω όμως οτι εμένα θα με βοηθούσε να καταλάβω.

    Με την ευκαιρία, μήπως μπορείς να μου γράψεις μια συνάρτηση FindMoney() που να δουλεύει; :) :)
    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  18-04-2006, 12:22 11986 σε απάντηση της 11982

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Καλά τη να πω!!!

    τέλειο παράδειγμα, καλά γιατί δεν έγραφες τοσο καιρό.

    αν βρώ απορίες θα ρωτήσω!δεν ειναι εκβιασμός:P

  •  18-04-2006, 12:29 11987 σε απάντηση της 11958

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Όχι τι εκβιασμός, ίσα ίσα, για να βοηθάμε είμαστε εδώ..Πάντως όπως πολύ σωστά είπε ο infoCenter, θέλει αρκετή δουλειά για να καταλάβεις πλήρως την έννοια του OOP (Object Oriented Programming)..

    Χαίρομαι πάντως που σας άρεσε το παράδειγμά μου και σε βοήθησε να καταλάβεις!Smile [:)]..

    Τώρα για FindMoney().. Όποιος βρει implementation που να δουλεύει το θέλω κι εγώ! Stick out tongue [:P]
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  20-04-2006, 11:25 12035 σε απάντηση της 11958

    Απ: Κλάσεις.. Μέθ..αδοι.. πεδία.. πεδάκια!!!

    Έχω μια κλάσει που έχει της ιδιότιτες ενους file(txt) και έχω φτιάξει

    private string _TxtGreated;

    public string Greated

    {

    get

    {

    return _TxtGreated;

    }

    set

    {

    _TxtGreated = value;

    }

    }

    ((στο οποίο δίνω την ώρα που φτιάχτηκε το αρχείο))

    το θέμα είναι οτι άλλες φορές θέλω την μέρα άλλες φορές τον μήνα και άλλες φορές ολλα μαζι.. καμία ιδεα ετζι ώστε να μην φτιάχνω μια method για να κάνει την δουλειά.
  •  20-04-2006, 12:47 12036 σε απάντηση της 11958

    Απ: Κλάσεις.. Μέθ..αδοι.. πεδία.. πεδάκια!!!

    Θα κάνεις την μεταβλητή απο string σε DateTime..Έτσι, όταν κάνεις store την ημερομηνία:

    MyFileClass myName = new MyFileClass();

    myName.Created = Convert.ToDateTime("21/05/2006 23:05:15");

    αν θα θέλεις μετά να πάρεις μόνο την ημέρα δημιουργείας, θα κάνεις:

    string monthCreated = myName.Created.Day.ToString();
    string hourCreated = myName.Created.Hour.ToString();

    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  06-05-2006, 04:21 12340 σε απάντηση της 11987

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

     pkefal wrote:
    Τώρα για FindMoney().. Όποιος βρει implementation που να δουλεύει το θέλω κι εγώ! Stick out tongue [:P]


    HRESULT FindMoney()
    {
       if(want_to_leave_from_Greece)
       {
          if(want_to_go_to_USA)
          {
             // $60.000-$70.000 minimum annual salary
             if(find_job_in_microsoft() || find_job_in_google() || find_job_in_cisco() ||
                find_job_in_amazon() || find_job_in_other_good_american_company() )
                return SUCCESS;
          }
          if(want_to_go_to_Europe)
          {
             if(find_job_in_nokia() || find_job_in_ericsson() || find_job_in_siemens() ||
                find_job_in_other_good_european_company() )
                return SUCCESS;
          }
          if(want_to_go_to_Dubai) //~$60.000 minimum annual salary
             if(find_job_in_any_good_dubai_company() )
                return SUCCESS;
       }
       else if(have_good_meso() || know_all_kolpa() || is_kwlofardos() )
          return SUCCESS;

       return FAIL;
    }
  •  12-03-2007, 20:29 26352 σε απάντηση της 12340

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Λοιπον εχω ενα προβλημα και ειπα να το γραψω εδω.

    εχω αρχισει και φτιαχνω ενα προγραμματακι σε C# το οποιο ειναι σαν το Cryptool αν ξερετε, δηλαδη εφαρμοζει αλγοριθμους κρυπτογραφησης και κωδικες σε ενα κειμενο. ειναι μια φορμα και εχω γραψει συναρτησεις "προετοιμασιας της φορμας" και "απο/κρυπτογραφησης" οι οποιες αντιδρουν σε events.

    το θεμα ειναι οτι θα αρχισουν να μαζευονται και θα γινει πανικος να ειναι ολα σε ενα αρχειο.

    Μπορει καποιος να μου δωσει μια ιδεα για το πως θα εισαγω κλασεις σε αυτο το μοντελο ωστε να ομαδοποιησω τις συναρτησεις που πληθαινουν συνεχως?
  •  12-03-2007, 22:45 26359 σε απάντηση της 26352

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Πάντως τα μισά θέματα που έχω βάλει .. ξαναέρχονται συνέχεια στην επιφάνεια!
  •  13-03-2007, 01:20 26363 σε απάντηση της 26352

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Καλύτερα να το ξεκινήσεις σε νέο thread, μόνο του και με κατάλληλο τίτλο. Έτσι, αυξάνονται οι πιθανότητες να προσελκύσεις απαντήσεις... Εδώ, μπορεί να μείνει αδιάβαστη η ερώτησή σου.


    Vir prudens non contra ventum mingit
  •  13-03-2007, 19:58 26397 σε απάντηση της 26363

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    Ας περιμενουμε μπορει καποιος να το δει αν και μαλλον δε γινεται "ευκολα" αυτο που ζηταω
  •  13-03-2007, 20:42 26402 σε απάντηση της 26397

    Απ: Κλάσεις..Μέθ..αδοι..πεδία..πεδάκια!!!

    patrox:
    Ας περιμενουμε μπορει καποιος να το δει αν και μαλλον δε γινεται "ευκολα" αυτο που ζηταω


    Είναι ολόκληρη ιστορία αυτό που ζητάς, καθώς είναι απο τις Βασικές Αρχές του Object Oriented programming. Και να θέλει κάποιος να απαντήσει και πολύ κόπος απαιτείται, αλλα και πιθανόν να μην καταλάβεις και πολλά απο αυτά που θα σου πει, καθώς δεν θα έχεις τις βασικές γνώσεις για να καταλάβεις τι ακριβώς σου λεει.

    Καλό θα ήτανε να ψάξεις στο google για εισαγωγη στο OOP κι ακόμα και τότε δεν μπορείς να καταλάβεις, εδώ ήμαστε. Smile

    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
Σελίδα 1 από 3 (38 εγγραφές)   1 2 3 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems