#00 — programowanie obiektowe

By 7 August 2014 February 20th, 2017 Kurs Javy

Lekc­ja pier­wsza będzie o pod­stawach pro­gramowa­nia, czym jest Java, jak przy­go­tować środowisko do pro­gramowa­nia, a także poz­namy kil­ka pod­sta­wowych pojęć.

Przed prze­jś­ciem dalej warto przeczy­tać poniższe artykuły:

Lekcja

Java — obiektowy język programowania

Bard­zo częs­to moż­na spotkać się z definicją, że Java jest obiek­towym językiem pro­gramowa­nia. Jest to bard­zo ważne, ponieważ defini­u­je to sposób, w jaki pracu­je­my z językiem. To tzw. paradyg­mat pro­gramowa­nia (zain­tere­sowanych alter­naty­wa­mi lub zgłę­bi­e­niem tego tem­atu odsyłam do wikipedii).

Pro­gramowanie obiek­towe znaczy tyle, że w kodzie pracu­je­my na obiek­tach. Obiek­ty z kolei to odzwier­ciedle­nie rzeczy­wistych rzeczy, uproszcze­nie zrozu­mi­ałe dla kom­put­era. Gdy­byśmy np. pisali aplikację służącą do zarządza­nia mieszkaniem, mielibyśmy obiek­ty np. Mieszkanie, Pokój, Pral­ka, Lodówka, Stół itp..

Weźmy na przykład Pralkę. Pralkę opisu­ją pewne infor­ma­c­je — np. aktu­al­nie wybrany pro­gram, to czy jest włąc­zona czy nie, czy drzwicz­ki są otwarte czy nie itp. Każ­da z tych infor­ma­cji może być prze­chowywana w osob­nym polu. Pole to nic innego jak jed­na infor­ma­c­ja na tem­at obiek­tu. Czyli polem będzie infor­ma­c­ja, czy drzwi są otwarte, osob­nym polem będzie infor­ma­c­ja czy pral­ka jest włąc­zona i jeszcze osob­nym polem będzie infor­ma­c­ja o aktu­al­nie wybranym pro­gramie. Podob­nie rok pro­dukcji pral­ki, jej kolor, mar­ka, wymi­ary — wszys­tkie te infor­ma­c­je będą prze­chowywane w polach obiektu.

2
Jed­nocześnie może­my wykon­ać pewne czyn­noś­ci na pralce — np. włączyć ją, wyłączyć, zmienić pro­gram, otworzyć drzwi itp. Każ­da z tych czyn­noś­ci to tzw. meto­da (częs­to spo­ty­ka się też określe­nie oper­ac­ja) obiektu.

Pod­sumowu­jąc:

  • obiek­ty to abstrak­cyjne opisy rzeczy­wistych przedmiotów
  • pola obiek­tów to poje­dyncze infor­ma­c­je o  obiekcie
  • metody obiek­tów to czyn­noś­ci jakie może­my wykon­ać na danym obiekcie

O polach i meto­dach powiemy sobie więcej w kole­jnej lekcji, gdzie będziemy to ćwiczyć już w Javie.

Klasa a obiekt — jaka jest różnica

W pro­gramowa­niu obiek­towym spotkamy się z dwoma pod­sta­wowy­mi określe­ni­a­mi — klasa oraz obiekt. Te poję­cia są ze sobą ściśle związane, ale bard­zo istotne jest rozu­mieć różnicę między nimi.

Mówiąc językiem tech­nicznym obiekt to instanc­ja klasy. Klasa to w pewnym sen­sie szablon opisu — czyli infor­ma­c­ja jakie są pola (jakie infor­ma­c­je moż­na prze­chowywać) oraz metody (jakie czyn­noś­ci wykony­wać). Obiekt z kolei to ‘konkret­ny przy­padek’ — czyli klasa oraz konkretne infor­ma­c­je (wartoś­ci pól) które składa­ją się na określony stan całego obiektu.

Aby zobra­zować to przykła­dem — klasa to np. Człowiek. Wiemy o niej, że ma pola imię i nazwisko ale w przy­pad­ku klasy nie mówimy o wartoś­ci­ach tych pól — po pros­tu że takie pola są. Klasa to człowiek jako gatunek, isto­ta. Obiekt z kolei to konkret­ny człowiek — taki, który posi­a­da imię i nazwisko. Zawsze ist­nieje więc tylko jed­na klasa danego typu, ale może ist­nieć wiele obiek­tów danej klasy.

3

 

O obiek­cie mówimy że jest pewnego typu — typem obiek­tu jest klasa, którą obiekt reprezen­tu­je. Np. obiekt Jan Kowal­s­ki jest typu Człowiek (w kat­e­go­ri­ach pro­gramowa­nia obiektowego).

Nazwy klas — pakiety

W Javie (jak i w wielu innych językach pro­gramowa­nia) przewidziano tzw. przestrze­nie nazw. Są one odpowiedz­ią na prob­lem, że kil­ka klas może mieć takie same nazwy (np. Con­vert­er — klasa o takiej nazwie może wys­tępować w kilu miejs­cach aplikacji i mieć różne zas­tosowa­nia). Aby wiado­mo było o którą klasę dokład­nie chodzi, w Javie funkcjonu­ją tzw. paki­ety. Paki­et to nic innego jak pre­fiks nazwy klasy który jed­noz­nacznie ją wyróż­nia. Nie mogą ist­nieć w jed­nej aplikacji dwie klasy o tej samej nazwie i tym samym pakiecie. Połącze­nie nazwy paki­etu i nazwy klasy krop­ką w jeden ciąg znaków to tzw. nazwa kwal­i­fikowana (qual­i­fied name). Przykład­owo, klasa reprezen­tu­ją­ca liczbę całkow­itą w Javie ma nazwę Inte­ger. Jej nazwa kwal­i­fikowana to java.lang.Inte­ger, a więc paki­et w którym się zna­j­du­je to java.lang .

Nazwy paki­etów najczęś­ciej tworzy się odwraca­jąc nazwę dome­ny — np. aplikac­ja pisana w ramach tego kur­su będzie uży­wała paki­etów zaczy­na­ją­cych się od pl.kobietydokodu.kurs . Więcej o paki­etach i ich prak­ty­cznym zas­tosowa­niu powiemy sobie w kole­jnej lekcji.

Zadania

W tej lekcji nie będzie jeszcze zada­nia związanego z kodem. W ramach zada­nia odpowiedz włas­ny­mi słowa­mi na poniższe pytania:

  1. Czym jest obiekt?
  2. Co posi­a­da obiekt?
  3. Czym różni się meto­da od pola?
  4. Wyjaśnij różnice i wza­jem­ną zależność pomiędzy klasą a obiektem?
Jeżeli masz prob­lem z zadaniem z lekcji i nie wiesz, jak go rozwiązać, to sprawdź, jak sobie radz­ić — przeczy­taj o szuka­niu rozwiązań prob­lemów z kodem.

4

Licencja Creative Commons

Jeśli uważasz powyższą lekcję za przy­dat­ną, mamy małą prośbę: pol­ub nasz fan­page. Dzię­ki temu będziesz zawsze na bieżą­co z nowy­mi treś­ci­a­mi na blogu ( i oczy­wiś­cie, z nowy­mi częś­ci­a­mi kur­su Javy). Dzięki!