Wstęp do Programowania Obiektowego

Programowania Obiektowego – Klasa i Tworzenie Obiektu w C#

Czym jest programowanie strukturalne?

Programowanie strukturalne to podejście do tworzenia programów, które opiera się na pisaniu funkcji/procedur i zmiennych, które są oddzielnie definiowane i przetwarzane. Każda funkcja pełni konkretną rolę, ale dane i logika są rozproszone po całym kodzie.

Przykład w programowaniu strukturalnym (C#):

Załóżmy, że mamy program, który zarządza informacjami o samochodach, takimi jak marka i model. Użyjemy zmiennych i funkcji do tego celu.

using System;

class Program
{
    static void Main()
    {
        // Dane samochodów
        string samochod1Marka = "Toyota";
        string samochod1Model = "Corolla";
        string samochod2Marka = "Ford";
        string samochod2Model = "Focus";

        // Wypisanie informacji o samochodach
        WypiszSamochod(samochod1Marka, samochod1Model);
        WypiszSamochod(samochod2Marka, samochod2Model);
    }

    static void WypiszSamochod(string marka, string model)
    {
        Console.WriteLine($"Samochód: {marka}, Model: {model}");
    }
}

Każdy samochód ma swoje zmienne: samochod1Marka, samochod1Model itd. Aby wypisać informacje o samochodzie, wywołujemy funkcję WypiszSamochod(), która przyjmuje dane jako argumenty. Problemem tego podejścia jest to, że dla każdego nowego samochodu musimy tworzyć nowe zmienne, co może prowadzić do nieczytelności kodu.

Przejście do Programowania Obiektowego (OOP)

W programowaniu obiektowym grupujemy dane (takie jak marka i model) oraz operacje na tych danych w jednej jednostce, zwanej klasą. Klasa to „przepis”, na podstawie którego tworzymy obiekty. Obiekt to przykład (instancja) tej klasy.

Czym jest klasa i obiekt?

  • Klasa: To wzorzec lub plan, który definiuje właściwości (np. marka, model) oraz zachowania (np. wyświetlanie informacji) dla pewnych typów obiektów.
  • Obiekt: To konkretny przykład (instancja) klasy, który ma swoje własne dane, ale dzieli zachowania z innymi obiektami tej samej klasy.

Zalety programowania obiektowego:

  • Lepsza organizacja kodu.
  • Łatwość w dodawaniu nowych funkcji i zmianie istniejących.
  • Możliwość ponownego użycia kodu.

Tworzenie klasy i obiektu w C#

Teraz zamiast tworzyć wiele zmiennych dla każdego samochodu, stworzymy klasę Samochod, która będzie opisywać wszystkie samochody.

Przykład w programowaniu obiektowym (C#):

using System;

class Samochod
{
    // Właściwości (dane) samochodu
    public string Marka;
    public string Model;

    // Konstruktor - tworzy nowy obiekt samochodu
    public Samochod(string marka, string model)
    {
        Marka = marka;
        Model = model;
    }

    // Metoda (funkcja) do wypisania informacji o samochodzie
    public void WypiszInformacje()
    {
        Console.WriteLine($"Samochód: {Marka}, Model: {Model}");
    }
}

class Program
{
    static void Main()
    {
        // Tworzenie obiektów samochodów
        Samochod samochod1 = new Samochod("Toyota", "Corolla");
        Samochod samochod2 = new Samochod("Ford", "Focus");

        // Wywołanie metody do wypisania informacji o samochodach
        samochod1.WypiszInformacje();
        samochod2.WypiszInformacje();
    }
}

Klasa Samochod:

  • Właściwości: Marka i Model – czyli dane, które każdy obiekt (samochód) będzie przechowywał.
  • Konstruktor: Funkcja, która pozwala na stworzenie nowego obiektu samochodu z określoną marką i modelem.
  • Metoda WypiszInformacje: To funkcja, która działa na obiektach tej klasy. Wypisuje informacje o danym samochodzie.

Obiekty samochod1 i samochod2:

  • Każdy z tych obiektów to konkretny samochód. samochod1 to Toyota Corolla, a samochod2 to Ford Focus.

Tworzenie obiektu: Używamy słowa kluczowego new, aby stworzyć nowe instancje klasy (obiekty).

Porównanie programowania strukturalnego i obiektowego

Programowanie StrukturalneProgramowanie Obiektowe
Skupia się na funkcjach i danych oddzielnie.Skupia się na obiektach, które łączą dane i funkcje.
Dla każdego zestawu danych trzeba tworzyć nowe zmienne.Używamy klasy, aby stworzyć wiele obiektów tego samego typu.
Zmiany w danych mogą wymagać modyfikacji wielu funkcji.Łatwo dodawać nowe funkcje lub zmieniać istniejące.