Zrozumienie klas, obiektów i metod

0

Witam!

Przyznaję, że zrozumienie klas, metod, obiektów i ich wzajemnej relacji stwarza mi trochę problemów. Chciałbym to zrozumieć na swoim przykładzie dlatego stworzyłem sobie prosty formularz, który łączy się z bazą danych. Chciałbym jednak by to połączenie następowało tylko w momencie naciśnięcia przycisku. Nie chce jednak powielać kodu przy każdym z przycisków dlatego kwestie połączenia chciałbym przenieść do pliku connect.
W tym pliku zacząłem od klasy:

public class polacz
    {
        public polaczenie()
        {
            string sciezka = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\Test\Test.mdb";
            OleDbConnection con = new OleDbConnection(sciezka);
        }
    }
}

Chciałbym by ta metoda zwracała con, tak aby w MainForm zacząć od:

public void Button2Click(object sender, EventArgs e)
{
   con.Open();
   //kod
   con.Close();
}

Jak mam to zrobić ? Jak się odwołać ?

2

Po pierwsze, klasa to opis jakiegos obiektu, czyli w Twoim przypadku bedzie to opis polaczenia - stad klasa powinna nazywac sie Polaczenie, zamiast polacz, a jeszcze lepiej jakby nazywala sie Connection, albo TestConnection, itd. Byleby po angielsku, po polsku po prostu sie nie da programowac;)
Po drugie, obiekt powinien mieć jakiś swój interfejs, czyli grupe metod/propertiesow przez ktore mozna tym obiektem manipulowac z zewnatrz - reszta metod/pol powinna byc prywatna. U Ciebie ten interfejs to wlasnie m.in. metody Open i Close

0

Wybacz, ale niestety nie rozumiem jak to zrobić ;/ Utworzyłem klasę, ale jedna metoda nie widzi wartości z drugiej. Czyli metoda connect nie widzi wartości "sciezka" Jak ją przekazać ?

    public class connect
    {
        public void data()
        {
            public string sciezka = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\Test\Test.mdb";
        }

        public void connect()
        {
            OleDbConnection con = new OleDbConnection(sciezka);
            con.Open();
        }

        public void disconnect()
        {
            OleDbConnection con = new OleDbConnection(sciezka);
            con.Close();
        }
    }
0

Utworzyłeś zmienną w metodzie, nie w klasie. Inne metody nie będą jej "widziały".

0

Tak szczerze mówiac, to powinieneś zacząć od jakiegos bardzo podstawowego tutoriala, bo bierzesz sie za łączenie z bazami, a nie opanowałeś jeszcze C# na poziomie przekazywania zmiennych...

Krótka analiza Twojej klasy:

 public class connect // Nazwa powinna być rzeczownikiem z duej litery - taka konwencja
    {
        public void data() //co ta metoda powinna wogole robic?
        {
            public string sciezka= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\Test\Test.mdb"; //to powinno byc wyciagniete z metody do wnetrza klasy, dodatkowo powinno byc wstrzykiwane z jakiegos configa czy cos
        }

        public void connect()
        {
            OleDbConnection con = new OleDbConnection(sciezka); // to powinno byc przeniesione do konstruktora
            con.Open();
        }

        public void disconnect()
        {
            OleDbConnection con = new OleDbConnection(sciezka); 
            con.Close(); //to wogole nie bedzie dzialac, zamykasz polaczenie, ktore tworzysz sobie linijke wczesniej, tamto, ktore zrobiles przy ''connect()'' dalej jest otwarte...
        }
    }

Ja bym to widział bardziej tak:

public class Connection
{
    private string path;

    private OleDbConnection con;

    private Connection()
    {
        Path = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\Test\Test.mdb";
        con = new OleDbConnection(Path);
    }

    private static Connection instance;
    public static Connection Instance
    {
        get
        {
            return instance ?? new Connection();
        }
    }

    public void Connect()
    {
        con.Open();
    }

    public void Disconnect()
    {
        con.Close();
    }
} 
0

Klasa to tak <ort>jak by</ort> "obiekt", wyobraź sobie na przykładzie z życia, że tym obiektem jest Piłka zawierająca <ort>pół-produkty</ort> jakich będziesz potrzebował do jej produkcji, oraz opis jej budowania krok po kroku. Produkcji piłki na pewno nie zaczniesz od budowy ( na twoim przypadku od połączeniu ). Najpierw musisz stworzyć listę <ort>pół-produktów</ort> jakie będą ci potrzebne do produkcji np. guma/balon, tworzywo pokrywające balon, wętyl etc. ( w twoim przypadku jest to ścieżka oraz "OleDbConnection" ), następnie udajesz się na zakupy, kupując poszczególne <ort>pół-produkty</ort> - konstruktor / przypisywanie danych do zmiennych ( FakeAccount np. zrobił to wszystko w metodzie "Connection()"), następnie możesz się brać za produkcję szycie etc. innymi słowy wykorzystujesz wcześniej zakupione elementy. ( kolejny raz na przykładzie FakeAccount metoda Connect() i Disconnect() ).

Po tych czynnościach możesz oddać piłkę do użytku. Mam nadzieję, że w jakimś stopniu wytłumaczyłem.

0

Dzięki wielkie za odpowiedzi. Tutki mam pootwierane, książki też, ale humaniście to trudno ogarnąć więc postanowiłem zrobić nieco większy projekt niż wyświetlanie napisów w konsoli, aby lepiej to zrozumieć. Może zbyt szybko rzuciłem się na głęboką wodę.

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