Zamknij komunikat

Nowy Office 2013
Do góry Skomentuj

02. Programowanie obiektowe

02. Programowanie obiektowe

Daniel Celeda
6 grudnia 2005
232 115
Odsłony
Daniel Celeda
6 grudnia 2005
232 115
Odsłony

OOP (ang. object-oriented programming) – czyli programowanie obiektowe.

Większość współczesnych aplikacji pisana jest w językach obiektowych. Czym zatem są te obiekty? Często spotykam się ze stwierdzeniem, że „wszystko jest obiektem”. Wystarczy tylko rozejrzeć się wokół siebie żeby się z tym zgodzić. Szklanka, łyżka, stół, szafka itd. To wszystko są obiekty. Obiekty składają się z innych obiektów. Np. dom składa się z dachu, drzwi, okien. Drzwi z klamki, zawiasów itd. W zależności od potrzeb, powiązania między obiektami możemy rozpatrywać na różnych poziomach. Możemy także wyróżnić pojęcie „klasy”. Klasa określa nam typy obiektów, ale ich nie konkretyzuje np. Jaś jest obiektem, a człowiek to klasa. Inaczej mówiąc, Jaś jest obiektem klasy człowiek. Dom Jasia jest obiektem klasy Dom.

A co to ma wszystko wspólnego z programowaniem?

Jak się przekonamy, bardzo dużo. Programując w językach obiektowych możemy nasze programy składać z obiektów jak z klocków.

Obiekty a programowanie

Gdy próbujemy opisać jakiś obiekt z otaczającej nas rzeczywistości trudno nam wymienić jego wszystkie cechy. W zasadzie jest to niemożliwe. Programując, nie możemy sobie na to pozwolić, tak więc obiekty w naszych programach muszą być ściśle zdefiniowane. Musimy wiedzieć z jakich cech się składają i jakie wartości mają te cechy, dlatego należy zdecydować się jakie cechy są ważne i umieścić je w definicji klasy. Pozostałe cechy należy odrzucić

Zdefiniujmy więc klasę Dom:

Cechy:   - kolor ścian
- kolor dachu
- drzwi
- okno

Tyle nam wystarczy, a więc sami decydujemy jak dokładnego opisu nam potrzeba. Definicja klas powinna być adekwatna do celu jaki chcemy osiągnąć, np. jeśli w naszym programie będziemy musieli rozróżniać obiekty klasy Dom po kolorze ścian, to tylko ta cecha nam wystarczy, pozostałe będą zbędne.

Zdefiniujmy obiekt klasy Dom:

Dom Jasia
Kolor ścian:    biały
Kolor dachu:   czarny
Drzwi:   drzwi Jasia
Okno:   okno małe

Kolory to proste typy, które nie są obiektami. Jednak drzwi i okna to też obiekty, a więc potrzeba nam definicji klas: Drzwi oraz Okno.

Drzwi
Cechy: - materiał
- kolor
- stan
Okno
Cechy: - szerokość
- wysokość
- stan

A następnie obiekty:

Drzwi Jasia
Materiał:   drewno
Kolor:   brązowy
Stan:   zamknięte
Okno małe
Szerokość:   0.5 metra
Wysokość:   1 metr
Stan:   zamknięte

Cechy możemy utożsamiać ze zmiennymi w programowaniu (w klasie są to tzw. pola). Dodatkowo obiekt może wykonywać ustalone czynności, np. drzwi i okna mogą się otwierać. Możemy także założyć, że dom potrafi zmieniać swój kolor. Funkcje te nazywamy metodami.

Ostateczne definicje klas wyglądają następująco:

Dom
Pola:   - kolor ścian
- kolor dachu
- drzwi
- okno
Metody: - zmień kolor ścian
- zmień kolor dachu
Drzwi
Cechy: - materiał
- kolor
- stan
Metody:  - zamknij
- otwórz
Okno
Cechy:  - szerokość
- wysokość
- stan
Metody:  - zamknij
- otwórz

Jak to zrobić w C#?

 Przyjrzyjmy się programowi w C#, który stworzy nam taki własny mini-świat. Przypuszczam, że nie będzie łatwo go zrozumieć, ponieważ na tym etapie nie posiadamy wystarczającej wiedzy. Wystarczy, że oswoimy się z widokiem kodu napisanego w C#, a w ramach pracy domowej możemy spróbować przeanalizować linijkę po linijce i zastanowić się co mogą znaczyć. Na dokładne opisanie poszczególnych instrukcji przyjdzie czas w dalszych częściach kursu.

class Drzwi
{
    public string Material;
    public string Kolor;
    public string Stan;

    public void Otworz()
    {
        Stan = "Otwarte";
    }

    public void Zamknij()
    {
        Stan = "Zamknięte";
    }
}

class Okno
{
    public double Szerokosc;
    public double Wysokosc;
    public string Stan;

    public void Otworz()
    {
        Stan = "Otwarte";
    }

    public void Zamknij()
    {
        Stan = "Zamknięte";
    }
}

class Dom
{
    public string KolorScian;
    public string KolorDachu;
    public Drzwi DrzwiDomu;
    public Okno OknoDomu;

    public void ZmienKolorScian(string kolor)
    {
        KolorScian = kolor;
    }

    public void ZmienKolorDachu(string kolor)
    {
        KolorDachu = kolor;
    }
}

class
KlasaGlowna
{
    static void Main()
    {
        Drzwi drzwiJasia = new Drzwi();
        drzwiJasia.Kolor = "brązowy";
        drzwiJasia.Material = "drewno";
        drzwiJasia.Stan = "zamknięte";

        Okno oknoJasia = new Okno();
        oknoJasia.Szerokosc = 0.5;
        oknoJasia.Wysokosc = 1;
        oknoJasia.Stan = "zamknięte";

        Dom domJasia = new Dom();
        domJasia.DrzwiDomu = drzwiJasia;
        domJasia.OknoDomu = oknoJasia;
        domJasia.KolorScian = "biały";
        domJasia.KolorDachu = "czarny";
    }
}

Zobacz również

Komentarze

kurs się przyda tym bardziej że jutro mam sprawdzian z programowania :D
pepe, 6 czerwca 2006, 20:53
dobre:>
kuba565, 1 czerwca 2007, 20:28
Dobry Kurs łatwo się czyta :)
Paweł, 31 sierpnia 2007, 09:41
Trochę to łopatologiczne jak dla ludzi którzy znają C++... Może przejdę od razu do dalszych części ;)
OwcA, 3 września 2007, 21:39
OOP (ang. object-oriented programming) – czyli programowanie obiektowe programowanie zorientowane obiektowo - but nevermind;)
Gandalf, 4 października 2007, 16:19
Już dawno chciałem rozpocząć zabawę z programowaniem, ale wszystkie kursy i inne pomoce były pisane w ten sposób jak by to wszystko było dla każdego oczywiste i jasne. A tutaj opisane dosłownie jak dla 10-latka i postrzegam to jako MEGAplus. Nawet tym starszym jak się będzie w ten sposób tłumaczyć to wszystko pochłoną błyskawicznie.
e7_, 13 listopada 2007, 19:37
Nie czytam kursu, bo mi się nie chce. Ja tam umiem wszystko z HTML-a. Powiem więcej. Umiem też CSS i Java Script.
Haker, 16 kwietnia 2008, 11:21
Haker... kogo? kogo? kogo? kogo to interesuje??? nie chcesz to nie czytaj i nie wyjeżdżaj tu z przechwłkami... A co do kursu to jest w deche ^^ świetna robota!!
Taikoubou, 30 kwietnia 2008, 21:45
Świetny kurs!!!!!!!!
Mon, 22 czerwca 2008, 11:35
a ja mam kolos pojutrze;)
Mon, 22 czerwca 2008, 11:36
Haker taki mądry jesteś? Ja znam b.dobrze pascala, delphi, action-script, musnąłem assemblera , html"a i biorę się za c# . Pozatym co ma html , java i css do c#?
seba000, 14 sierpnia 2008, 15:44
no akurat java ma dużo wspólnego :) ale html hmmm no nie powiem Haker prawdziwy z Ciebie hakier :D

Pokorny, 21 października 2008, 11:32
Kto się zgodzi z moją opinnią??

Informatyk, 17 listopada 2008, 17:50
ja sie zgadzam
 

ja, 27 czerwca 2009, 19:59
lipa na max"a brak zdefiniowanych konstruktorów i destruktorów metody żle zdefiniowane... brak opisu... i wogóle do niczego ten kurs...
Infoboot, 12 marca 2010, 16:37
infoboot na samym poczatku masz napisane ze bedzie niektorych rzeczy brakowalo, i ze pisac na forum. twoj komentarz mowi o tobie tyle ze albo jestes wtornym analfabeta i nie rozumiesz co czytasz , albo ze nie czytasz wszystkiego. a jak nie czytasz od poczatku to twoje komentarze co do tego sa zbedne. kurs niezly, puki co jestem w trakcie czytania
janek, 31 marca 2010, 19:02
Rewelacyjny tutorial, musnąłem wczesnie troche c++, teraz gdy czytam tego tutka to wszystko się odświerza i jest bardzo przyjemnie wytłumaczone. Dzięki!
maalybond, 7 lipca 2010, 20:29
Zajfajny kurs :)
Ulfarn, 14 marca 2012, 21:45
jest 02 lipiec początek upalnego lata, a mnie to chwyciło: nareszcie coś napisane dla mnie :) i żeby tylko tego różni mędrcy nie spaskudzili !
jozik, 2 lipca 2012, 23:22
dzięki za ten kurs! po 5 latach przerwy odświeżam sobie materiał z 3 semestrów nauki C# na studiach... ale tym razem to ogarniam ^^
Qlczas, 26 października 2012, 12:58
proszę o info, w KlasaGlowna -> drzwiJasia.Stan = "zamknięte" czy ten wyraz "zamknięte" nie musi być napisane z dużej litery jak stan określony w metodzie class Drzwi?
Dim, 28 września 2014, 18:53
zamykanie Close(); deklaracja zmiennych double a, b, c, delta, X1, X2, pierw; Convert.ToDouble a = Convert.ToDouble(txtA.Text); MessageBox.Show MessageBox.Show("Moja liczba = " + a.ToString()); Convert.ToString lbDelta.Text = Convert.ToString(delta); pierwiastek pierw = Math.Sqrt(delta); potęga double b = Math.Pow(a, 2); tablica 1D int["> tab1D = new int[5">; tab1D[0"> = 1; max, min for (int i = 0; i < 5; i++) { if (tab1D > max) max = tab1D; if (tab1D < min) min = tab1D; } tablica 2D double[,"> tab2D = new double[3, 3">; widoczność if(button1.Visible == false) button1.Visible = true; else button1.Visible = false; zaznaczenie string s=""; if (radioButton1.Checked==true) s="zaznaczono 1"; wykres chart1.Series[0">.Points.AddXY(i, y); wybrane comboBox1.SelectedIndex = 3; 2 pętle for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) if (i == j) tab2D[i, j"> = 1; if (i < j) tab2D[i, j"> = 2; if (i > j) tab2D[i, j"> = 0;
xx, 5 lutego 2015, 10:39

Dodaj swój komentarz

Zasady publikacji komentarzyZasady publikacji komentarzy

Redakcja CentrumXP.pl nie odpowiada za treść komentarzy publikowanych na stronach Portalu
i zastrzega sobie prawo do usuwania wypowiedzi, które:

  • zawierają słowa wulgarne, obraźliwe, prowokujące i inne naruszające dobre obyczaje;
  • są jedynie próbami reklamowania stron internetowych (spamowanie poprzez umieszczanie linków);
  • przyczyniają się do złamania prawa bądź warunków licencyjnych oprogramowania (cracki, seriale, torrenty itp.);
  • zawierają dane osobowe, teleadresowe, adresy mailowe lub numery GG;
  • merytorycznie nie wnoszą nic do dyskusji lub nie mają związku z tematem komentowanego newsa, artykułu bądź pliku.



Wydawca Portalu

Onex Group z tytułem Finalisty 2017 Microsoft Partner of the Year Awards. Jesteśmy największym w Polsce sprzedawcą Office 365 i Azure dla małych i średnich przedsiębiorstw oraz liderem na rynku szkoleń e-learningowych z oprogramowania Microsoft. Prowadzimy też najpopularniejszy w Polsce portal o technologii Microsoft - CentrumXP.

Nasze kompetencje

  • 14 award
  • 9 award
  • award Partner Roku Microsoft 2017
  • Gold Application Development
  • Gold Application Integration
  • Gold Cloud Platform
  • Gold Cloud Productivity
  • Gold Data Analytics
  • Gold Data Platform
  • Gold Devices and Deployment
  • Gold Digital Advertising
  • Gold Hosting
  • Gold Intelligent Systems
  • Gold Midmarket Solution Provider
  • Gold OEM
  • Gold Small and Midmarket Cloud Solutions
  • Gold Volume Licensing
  • Silver Collaboration and Content
  • Silver Communications
  • Silver Datacenter
  • Silver DevOps
  • Silver Enterprise Mobility Management
  • Silver Identity and Access
  • Silver Messaging
  • Silver Project and Portfolio Management
  • Silver Software Asset Management
arrow-down-alt Więcej

Kontakt

Logo Onex Group

Onex Group

Kierbedzia 4
00-728 Warszawa

Oddział w Częstochowie

Al. Najświętszej Maryi Panny 34
42-200 Częstochowa

Oddział w Sosnowcu

Al. Mireckiego 22C
41-200 Sosnowiec

503-589-602