Definiowanie własnych klas

Podobne dokumenty
Definiowanie własnych klas

Podstawy Programowania Obiektowego

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wykład 4: Klasy i Metody

Kompozycja i dziedziczenie klas

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Materiały do zajęć VII

Dokumentacja do API Javy.

Programowanie obiektowe - 1.

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Wykład 8: klasy cz. 4

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Do czego służą klasy?

Technologie i usługi internetowe cz. 2

Rozdział 4 KLASY, OBIEKTY, METODY

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Podstawy Języka Java

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Aplikacje w środowisku Java

KLASY cz.1. Dorota Pylak

Dziedziczenie jednobazowe, poliformizm

Do czego służą klasy?

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Enkapsulacja, dziedziczenie, polimorfizm

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Wstęp do programowania obiektowego. Wykład 2

Programowanie obiektowe

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Technologie obiektowe

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wykład 5: Klasy cz. 3

PHP 5 język obiektowy

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Programowanie obiektowe

Programowanie 2. Język C++. Wykład 3.

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Zaawansowane programowanie w języku C++ Klasy w C++

Kurs WWW. Paweł Rajba.

Programowanie obiektowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie obiektowe

Java Język programowania

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

TEMAT : KLASY DZIEDZICZENIE

Definicje klas i obiektów. Tomasz Borzyszkowski

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Język Java część 2 (przykładowa aplikacja)

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

hierarchie klas i wielodziedziczenie

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

.NET Klasy, obiekty. ciąg dalszy

Wykład 3 Składnia języka C# (cz. 2)

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Wstęp do Programowania 2

Obiektowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Interfejsy i klasy wewnętrzne

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Języki i techniki programowania Ćwiczenia 2

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Klasy abstrakcyjne, interfejsy i polimorfizm

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Język Java część 2 (przykładowa aplikacja)

Programowanie obiektowe

Modelowanie i Programowanie Obiektowe

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Programowanie obiektowe

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Lab 9 Podstawy Programowania

Programowanie w Internecie. Java

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Wykład 5: Więcej o Klasach i Metodach

Platformy Programistyczne Podstawy języka Java

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Klasy i obiekty cz II

10. Programowanie obiektowe w PHP5

Wykład 2: Podstawy Języka

Język C++ Programowanie obiektowe

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Transkrypt:

Abstrakcja Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Świat rzeczywisty jest bardzo złoŝony i nie jest moŝliwe dokładne opisanie budowy i działania wszystkich tworów, które się na niego składają Opis rzeczywistości umoŝliwia abstrakcja, która jest procesem tworzenia pojęć, w którym wychodząc od rzeczy jednostkowych (najczęściej konkretnych) dochodzimy do pojęcia bardziej ogólnego poprzez konstatowanie tego, co dla tych rzeczy wspólne (zazwyczaj własności). Abstrakcją w programowaniu nazywamy pewnego rodzaju uproszczenie rozpatrywanego problemu, polegające na ograniczeniu zakresu cech modelowanych rzeczy wyłącznie do cech kluczowych dla danego problemu, a jednocześnie niezaleŝnych od implementacji. pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 1 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 2 / 30 Programowanie obiektowe Programowanie obiektowe jest stylem programowania, w którym do tworzenia programów uŝywa się obiektów. obiekt = dane + Styl taki powstał w wyniku postrzegania rzeczywistości jako zbioru obiektów róŝnego typu, które mogą wykonywać określone czynności, potrafią się ze sobą komunikować i na siebie wzajemnie oddziaływać. Obiekty w programie często odzwierciedlają cechy i umiejętności swoich odpowiedników ze świata rzeczywistego. Paradygmaty programowania obiektowego Abstrakcja KaŜdy obiekt w systemie słuŝy jako model abstrakcyjnego "wykonawcy", który moŝe wykonywać pracę, opisywać i zmieniać swój stan, oraz komunikować się z innymi obiektami w systemie, bez ujawniania, w jaki sposób zaimplementowano dane cechy. Enkapsulacja (hermetyzacja) Ukrywanie implementacji. Zapewnia, Ŝe obiekt nie moŝe zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko wewnętrzne klasy mogą zmieniać jego stanu. KaŜda klasa obiektu prezentuje swój "interfejs", który określa dopuszczalne współpracy. Dziedziczenie Definiowanie i tworzenie specjalizowanych klas obiektów na podstawie bardziej ogólnych. Dla klas specjalizowanych nie trzeba redefiniować całej funkcjonalności, lecz tylko tą, której nie ma klasa ogólniejsza. Polimorfizm Referencje i kolekcje obiektów mogą dotyczyć obiektów róŝnego typu, a wywołanie dla referencji spowoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 3 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 4 / 30

Klasy i obiekty Java jest językiem obiektowym. Języki obiektowe posługują się pojęciem obiektu i klasy. Obiekt to konkretny lub abstrakcyjny byt, wyróŝnialny w modelowanej rzeczywistości, posiadający określone właściwości (atrybuty) oraz mogący świadczyć określone usługi (), czyli wykonywać określone działania lub przejawiać określone zachowania. Obiekty współdziałają ze sobą wymieniając komunikaty, które Ŝądają wykonania określonych usług (metod). Klasa to mający nazwę opis pewnego rodzaju bytów posiadających takie same cechy (byty te nazywamy obiektami lub instancjami klasy). Wspólne cechy to atrybuty (pola) poszczególnych obiektów oraz operacje (), które moŝna na obiektach wykonywać. Klasy i obiekty cd. Definicja klasy określa: zestaw cech (atrybutów) obiektów klasy, zestaw operacji, które moŝna wykonywać na obiektach klasy, specjalne operacje, które pozwalają na inicjowanie obiektów przy ich tworzeniu. Wspólne cechy (atrybuty) obiektów nazywane są polami klasy. Operacje wykonywane na obiektach nazywane są metodami. Specjalne operacje inicjalizacji przy tworzeniu obiektów nazywane są konstruktorami. Pola i (wraz z konstruktorami) nazywane są składowymi klasy. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 5 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 6 / 30 Klasy i obiekty cd. Klasy i obiekty cd. Klasę przedstawia się w formie prostokąta podzielonego na trzy części: górna część zawiera nazwę klasy, środkowa część przedstawia atrybuty obiektów, dolna część przedstawia konstruktory oraz obiektów. Nazwa klasy atrybuty obiektów klasy (pola klasy) konstruktory oraz obiektów składowe klasy Ogólna postać definicji klasy w języku Java: public class NazwaKlasy [spdostępu] typ nazwapola;... [spdostępu] typ nazwametody(lista_parametrów) definicja_funkcji... Uwagi: modyfikator dostępu public przed słowem class moŝe nie występować, modyfikatory [spdostępu] określają dostępność pól i metod. nagłówek i definicja w całości muszą znajdować się w klasie. definicja klasy nie jest zakończona średnikiem. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 7 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 8 / 30

Przykładowa definicja klasy ParaLiczb class ParaLiczb // definicja pól int a; int b; // definicja konstruktora ParaLiczb() a = 0; b = 0; // definicja suma int suma() return a+b; // definicja iloczn int iloczyn() return a*b; Obiekty i referencje do obiektów Obiekty są instancjami (egzemplarzami) klasy. Do obiektów moŝna odwoływać się w programie za pomocą referencji. Referencja to wartość, która oznacza lokalizację (adres) obiektu w pamięci. Referencje mogą być pamiętane w zmiennych referencyjnych, np.: ParaLiczb para; Zmienne referencyjne mogą zawierać referencje do obiektów lub nie zawierać Ŝadnej referencji (nie wskazywać na Ŝaden obiekt). Zmienna, która nie zawiera referencji do obiektu ma wartość null. Zmiennej referencyjnej moŝna przypisywać wyłącznie referencje do obiektu lub wartość null. Referencje moŝna porównywać wyłącznie za pomocą operatorów == lub!=. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 9 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 10 / 30 Obiekty i referencje do obiektów Deklaracja zmiennej referencyjnej nie tworzy obiektu tzn. nie wydziela pamięci do przechowywania obiektu klasy. Obiekt musi być jawnie utworzony za pomocą operatora new, który zwraca referencję do obiektu. Ta referencja moŝe zostać przypisana zmiennej referencyjnej, np.: para = new ParaLiczb(); Definiowanie pól klasy Pola (atrybuty) klasy deklarujemy jako zmienne wewnątrz klasy. Deklaracja moŝe zawierać modyfikator dostępu (np. private, protected lub public), oraz wyraŝenie inicjujące, np.: private float wartość = 100.0f; nazwy pól zwykle piszemy małymi literami. zmienna referencyjna para referencja ParaLiczb a b obiekt klasy ParaLiczb Pola ustalone zawierają w deklaracji dodatkowy modyfikator final, np.: final int ROZMIAR_CZCIONKI = 14; nazwy pól ustalonych zwykle piszemy DUśYMI_LITERAMI. Pola klasy, które nie mają przypisanej wartości początkowej będą miały wartości domyślne: pola typu całkowitego (np. typu int) liczbę 0, pola typu rzeczywistego (np. typu float) liczbę 0.0 pola typu logicznego wartość false, pola typu referencyjnego wartość null. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 11 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 12 / 30

Odwołania do pól klasy Do pól klasy odwołujemy się za pomocą operatora selekcji. np. para.a referencja_do_obiektu.nazwa_pola Jeśli odwołujemy się do pola bieŝącego obiektu (np. w metodzie wywołanej na rzecz tego obiektu), które nie zostało przesłonięte, to moŝna odwoływać się z pominięciem zmiennej referencyjnej i operatora selekcji.. class ParaLiczb int a, b; int geta() return a; odwołanie do pola a Odwołania do pól klasy cd. Jeśli odwołujemy się do pola bieŝącego obiektu (np. w metodzie wywołanej na rzecz tego obiektu), które zostało przesłonięte przez zmienną lokalną, to do pola moŝna odwoływać się za pomocą słowa this np.: class ParaLiczb int a, b; int seta(int a) this.a = a; odwołanie do pola a deklaracja pola a parametr a przesłania zasięg pola a Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 13 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 14 / 30 Definiowane metod w klasie Definiowane metod w klasie cd. modyfikator dostępu typ wyniku nazwa lista parametrów public int obliczsume(int a, int b) int c = a+b; ciało return c; zwracany wynik nagłówek typ wyniku określa typ danych zwracanych przez metodę. Jeśli metoda nic nie zwraca to zapisujemy void. Jeśli metoda zwraca wynik to zakończenie działania powinno następować na skutek instrukcji return. lista parametrów zawiera deklaracje parametrów, które są przekazywane do przy wywołaniu. Lista ta moŝe być pusta (metoda bezparametrowa). nagłówek i ciało w całości muszą znajdować się w klasie. nazwę zaczynamy od małej litery i dalej stosujemy notację węgierską np. dodaj, obliczsume. modyfikator dostępu określa czy metoda moŝe być wywoływana spoza klasy, w której jest zdefiniowana. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 15 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 16 / 30

Konstruktory Konstruktor to specjalna metoda, która słuŝy (głównie) do inicjowania pól obiektów. Konstruktor zawsze ma nazwę taką samą jak nazwa klasy, nie ma Ŝadnego typu wyniku (nawet void), ma listę parametrów (w szczególności moŝe być pusta). jest zawsze wywoływany za pomocą wyraŝenia new W klasie moŝe być zdefiniowanych wiele przeciąŝonych konstruktorów, które róŝnią się listą parametrów. Jeśli w klasie nie zdefiniowano Ŝadnego konstruktora to jest tworzony domyślny konstruktor bezparametrowy, który inicjuje pola obiektu wartościami domyślnymi. Konstruktor domyślny nie jest dodawany, gdy w klasie zdefiniowano jakikolwiek inny konstruktor. Konstruktory przykład class Towar private nazwa; private double cena; private int ilosc; public Towar() nazwa = "nieznany"; cena = 0.0; ilosc = 0; public Towar( nazwa) this(); this.nazwa = nazwa; public Towar( nazwa, double cena, int ilosc) this(nazwa); this.cena = cena; this.ilosc = ilosc; public static void main( [] args) Towar t1, t2, t3, t4; t1 = new Towar(); t2 = new Towar("Zeszyt"); t3 = new Towar("Blok rysunkowy", 2.50, 5); bezparametrowego z jednym parametrem bezparametrowego z jednym parametrem z trzema parametrami Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 17 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 18 / 30 Pola i statyczne Wszystkie pola niestatyczne istnieją w kaŝdym obiekcie będącym instancją klasy. tzn. kaŝdy obiekt posiada własny indywidualny zestaw atrybutów opisujących jego właściwości. Pola statyczne dotyczą całej klasy, a nie poszczególnych obiektów są one pamiętane w specjalnym obszarze pamięci wspólnym dla całej klasy. Składowe statyczne stanowią właściwości całej klasy, a nie poszczególnych obiektów. Pola i statyczne cd. Do składowych statycznych klasy odwołujemy się za pomocą operatora selekcji. NazwaKlasy.nazwa_składowej JeŜeli istnieje jakiś obiekt to do składowej statycznej moŝna się równieŝ odwoływać tak, jak do zwykłej składowej (tzn. poprzez podanie referencji do obiektu) referencja_do_obiektu.nazwa_składowej Wewnątrz klasy do składowych statycznych moŝna odwoływać się w uproszczony sposób podając tylko ich nazwę. Składowe statyczne (pola i ): są deklarowane przy uŝyciu specyfikatora static mogą być uŝywane nawet wtedy, gdy nie istnieje Ŝaden obiekt klasy. Ze statycznych metod nie wolno odwoływać się do niestatycznych składowych klasy podając ich nazwę (obiekt moŝe nie istnieć). MoŜliwe są natomiast odwołania do innych składowych statycznych. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 19 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 20 / 30

Pola i statyczne przykład class Towar private static int vat = 0; static void ustawvat(int vat) Towar.vat = vat; System.out.printf("\nVAT wynosi %d\n\n", vat); private nazwa = "nieznany"; private double cena = 0.0; private int ilosc = 0; Towar( nazwa, double cena, int ilosc) this.nazwa = nazwa; this.cena = cena; this.ilosc = ilosc; double obliczwartoscnetto() return cena * ilosc; double obliczvat() return cena*ilosc*vat/100; double obliczwartoscbrutto() return obliczwartoscnetto() + obliczvat(); pole statyczne metoda statyczna pola niestatyczne konstruktor niestatyczne Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 21 / 30 Pola i statyczne przykład cd. public to() return.format("%10s %7.2f*%d + %2d%% VAT -> %7.2f", nazwa, cena, ilosc, vat, obliczwartoscbrutto()); public void drukuj() System.out.println(this); public static void main([] args) // nazwa = Towar ; // cena = 100.0; // ilosc = 1; // drukuj(); Towar t1 = new Towar("Atlas ", 12.50, 2); Towar t2 = new Towar("Zeszyt A4", 2.40, 5); ustawvat(0); t1.drukuj(); t2.drukuj(); Towar.ustawVAT(7); t1.drukuj(); t2.drukuj(); t1.ustawvat(22); t1.drukuj(); t2.drukuj(); niestatyczne w metodzie statycznej nie wolno odwoływać się do pól i metod niestatycznych wywołania statycznej wywołania niestatycznej dla obiektów t1 i t2 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 22 / 30 Modyfikatory dostępu do składowych klasy Modyfikatory dostępu pozwalają ukrywać dane i przed powszechnym dostępem. W języku Java występują następujące modyfikatory: private składowe prywatne dostępne tylko z danej klasie. protected składowe chronione dostępne z danej klasy i wszystkich kasach ją dziedziczących pubic składowe publiczne dostępne z kaŝdej klasie (brak modyfikatora) składowe zaprzyjaźnione dostępne ze wszystkich klas danego pakietu Hermetyzacja Dane (pola klasy) są traktowane jako nierozdzielna całość z usługami (metodami klasy). Dodatkowe ograniczanie dostępu moŝe znacznie zwiększyć odporność programu na błędy przez: ochronę przed przypadkowym zepsuciem UŜytkownik klasy nie ma dostępu do prywatnych pól i tym samym nic nie popsuje nieświadomie. zapewnienie klarownego interfejsy programistycznego UŜytkownik klasy ma do dyspozycji wyłącznie niezbędne, co ułatwia poprawne korzystanie z klasy umoŝliwienie zmian wewnętrzyj implementacji Twórca klasy moŝe bezpiecznie modyfikować wewnętrzną implementację metod prywatnych. UŜytkownicy klasy nie będą musieli dokonywać Ŝadnych zmian w swoich programach. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 23 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 24 / 30

Hermetyzacja przykład public class Osoba // pola prywatne private nazwisko; private int rokurodzenia; // publiczny konstruktor public Osoba( nazwisko, int rok) this.nazwisko = nazwisko; rokurodzenia = rok; // oblicza aktualny wiek osoby public int obliczwiek(int rok) return rok - rokurodzenia; // odczytuje nazwisko osoby public podajnazwisko() return nazwisko; // odczytuje rok urodzenia public int podajrokurodzenia() return rokurodzenia; // umoŝliwia zmianę nazwiska public void zmiennazwisko( nazwisko) this.nazwisko = nazwisko; prywatne pola klasy pamiętają dane personalne osoby, którą reprezentuje obiekt publiczny konstruktor zapisuje dane personalne osoby w chwili urodzenia. publiczna metoda umoŝliwia obliczanie wieku osoby w podanym roku publiczne umoŝliwiają odczytywanie aktualnych danych personalnych osoby. akcesorowe umoŝliwiające publiczny dostęp do prywatnych pól klasy. publiczna metoda umoŝliwia zmianę nazwiska osoby np. po zawarciu małŝeństwa. Rok urodzenia osoby nie moŝna zmieniać modyfikatorów umoŝliwiające modyfikacje prywatnych pól klasy Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 25 / 30 Tablice Tablice są zestawami elementów (wartości) tego samego typu, ułoŝonych na określonych pozycjach. Do kaŝdego z tych elementów mamy bezpośredni dostęp poprzez nazwę tablicy i indeks (numer) elementu. Tablice zawsze są indeksowane od zera. Tablica n-elementowa ma indeksy od 0 do n-1. W Javie tablice są obiektami, a nazwa tablicy jest nazwą zmiennej referencyjnej do Przykład: obiektu-tablicy. int[] tab = new int[5]; tab int [ ] [0] 0 [1] 0 [2] 0 [3] 0 [4] 0 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 26 / 30 Tablice cd. Deklaracja tablicy składa się z: nazwy typu elementów tablic, pary nawiasów kwadratowych, nazwy zmiennej, która identyfikuje tablicę. Rozmiar tablicy nie stanowi składnika deklaracji tablicy. Przykład: Tablice cd. Sama deklaracja tablicy tworzy zmienną referencyjną, ale nie alokuje pamięci dla samej tablicy. Pamięć jest alokowana dynamicznie w wyniku inicjacji za pomocą nawiasów klamrowych albo w wyniku uŝycia wyraŝenia new. Przykład: int[] tabint = 3, 6, 1, 5, 2; tabint int [ ] [0] 3 [1] 6 [2] 1 [3] 5 [4] 02 int[] arr; // deklaracja tablicy liczb całkowitych typu int [] napisy; // deklaracja tablicy referencji do obiektów klasy double[][] macierz; // deklaracja dwuwymiarowej tablicy liczb rzeczywistych float [] tabfloat = new float[5]; tabfloat float [ ] [0] 0.0 [1] 0.0 [2] 0.0 [3] 0.0 [4] 0.0 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 27 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 28 / 30

Tablice cd. [] imiona = Ala, Ela, Iza, null, Ula ; imiona [ ] [0] [1] [2] [3] null [4] [] teksty = new [3]; teksty[0] = Ala ma kota ; Ala Ela Iza Ula Tablice cd. Tablice w Javie mają pole length, które pozwala odczytać rozmiar tablicy za pomocą wywołania: nazwa_tablicy.length Przykład: Po utworzeniu obiektu tablicy rozmiar nie moŝe być zmieniany!!! [] imiona = Ala, Ela, Iza, null, Ula ; for (int i=0; i < imiona.length; i++) if (imiona[i]!=null) System.out.println(imiona[i]); teksty [ ] [0] [1] null [2] null Ala ma kota Program drukuje wszystkie elementy zapamiętane w tablicy imiona. Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 29 / 30 Definiowanie własnych klas Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 30 / 30