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

 

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

Αναφορά σε μίο κλάση?

Îåêßíçóå áðü ôï ìÝëïò pdk. Τελευταία δημοσίευση από το μέλος darxus στις 06-11-2007, 23:04. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-11-2007, 19:56 36971

    Αναφορά σε μίο κλάση?

    Άρχισα να προγραμματίζω σε γλώσσες όπως c,pascal και basic οπότε δέν πολυσυμπαθώ τις oop γλώσσες.Βέβαια καταλαβαίνω γενικά οτι για μεγάλα projects ο αντικειμενοστρεφής προγραμματισμός είναι οτι καλύτερο.Αυτό που θέλω να ρωτήσω είναι το εξής.Υπάρχει κάποιος τρόπος να αναφερθώ σε κάποιες functions μιας κλάσης χωρίς το κλασικό
    dim  onomaklashs as new klash

    onomaklashs.functionkati()
    Ξέρω οτι κάτι τέτοιο γίνετε με module.Αλλά στον compiler που δουλεύω δεν μπορώ να χρησιμοποιήσω modules.Τώρα μην με ρωτήσετε παραπάνω για τον compiler.Υπάρχει τέτοια περίπτωση?Ας πούμε μια απλή γλώσσα προγραμματισμού έχει όλες τις function της σε ενα dll για παράδειγμα.Όταν γράφω στην γλωσσα αυτη δεν γράφω onomaklashs.print("kati") alla print("kati").Ελπίζω να γίνει κατανοητή η απορία μου και κάποιος να μου δώσει τα φώτα του.
  •  05-11-2007, 22:46 36974 σε απάντηση της 36971

    Απ: Αναφορά σε μίο κλάση?

    Αν γράφεις σε visual basic .net (για το visual basic το πρόσεξα από το dim που έβαλες, για το .net απλά υποθέτω), μπορείς να χρησιμοποιήσεις το shared keyword όταν φτιάχνεις μια συνάρτηση μέσα σε μία κλάση, προκειμένου αυτή η συνάρτηση να μην είναι instance method αλλά object method.

    Δηλαδή, έχεις

    1
    2
    3
    4
    5
    Public Class Test
    Public Shared Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
    Return a + b
    End Function
    End Class

    οπότε μπορείς να πεις απλά
    Dim x as integer = Test.Add(1, 2)

    Ο άλλος τρόπος, όπως είπες, είναι το module. Βέβαια, ο compiler της VB.net μετατρέπει το module σε κλάση με shared μεθόδους (αν θυμάμαι καλά). Οπότε, είναι το ίδιο πράμα.


    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  06-11-2007, 15:55 36999 σε απάντηση της 36974

    Απ: Αναφορά σε μίο κλάση?

    Nαι ξέρω πως να χρησιμοποιώ μια κλάση.Απλά αντί για test.add να μπορούσα να γράψω σκέτο add.Anyway μάλλον δεν γίνεται αυτό και μπορεί να είναι και καλύτερα έτσι.Εγώ το σκεφτόμουν ώς εξής.Σέ ενα άλλο thread είχα πεί για ενα compiler που βρήκα που μπορεί να μεταγλωτίζει vb.net.Είναι πολύ απλό και σκέφτηκα να φτιάξω κάτι σαν γλώσσα προγραμματισμού.Δηλαδή απο το dll να μπορεί να καλεί ο χρήστης την print πχ αυτής της καινούργιας γλώσσας και όχι την klash.print .Αυτό που θέλω γίνεται με modules αλλα ο compiler δεν μπορεί να αναγνωρίσει τα modules όπως γίνεται αυτόματα με το visual studio.Τεσπά δέν πειράζει απλά έπρεπε να ρωτήσω γιατι δέν έχω πολλές θεωριτικές γνώσεις πάνω στην vb.
  •  06-11-2007, 23:04 37011 σε απάντηση της 36999

    Απ: Αναφορά σε μίο κλάση?

    Όσον αφορά το πρώτο ερώτημα που έθεσες μπορείς να δεις για Static Methods περισσότερα στο web, το παράδειγμα που σου δείχνω είναι για C# αλλά πιστεύω πως μπορεί να μετατραπεί εύκολα σε VB.NET.


    using System;

    namespace Test1
    {
      class MyMathClass
      {
        // Στατική μέθοδος: είναι ανεξάρτητη αντικείμενα,
        // αυτό σημαίνει οτί τέτοιες μέθοδοι μπορούν να κληθούν οποτεδήποτε.
        public static int Add(int a, int b) { return(a + b); }
        
        // Μη στατική μέθοδος: Υπάρχει μόνο και μόνο για να εκφράσει την
        // λειτουργικότητα ενός αντικειμένου, με άλλα λόγια μόνο το αντικείμενο
        // έχει το δικαίωμα να καλέσει την μέθοδό του.
        public int Sub(int a, int b) { return(a - b); }
      }
      
      class Program
      {
        public static void Main(string[] args)
        {
          Console.WriteLine("Add: " + MyMathClass.Add(10, 20)); // Παράδειγμα χρήσης στατικής μεθόδου.
          //Console.WriteLine("Addition: " + MyMathClass.Sub(40, 1)); // Δεν επιτρέπεται.
          
          Test1.MyMathClass mc = new MyMathClass(); // Δημιουργία ενός αντικειμένου που ανήκει στην τάξη MyMathClass
          Console.WriteLine("Sub: " + mc.Sub(40, 1)); // Εκτελείται κανονικά.
          // Console.WriteLine("Add: " + mc.Add(10, 20)); // Δεν επιτρέπεται.
                
          Console.Write("Press any key to continue...");
          Console.ReadKey(true);
        }
      }
    }


    "Developers do not fulfill their desires, they just implement their demands".
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems