Aplikacje w środowisku Java

Podobne dokumenty
Aplikacje w środowisku Java

Aplikacje w środowisku Java

Dokumentacja do API Javy.

Rozdział 4 KLASY, OBIEKTY, METODY

Definiowanie własnych klas

Wykład 4: Klasy i Metody

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

Programowanie obiektowe

PHP 5 język obiektowy

Klasy i obiekty cz II

Enkapsulacja, dziedziczenie, polimorfizm

Podstawy obiektowości

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

Aplikacje w środowisku Java

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe

Podstawy Programowania Obiektowego

Programowanie obiektowe

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

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

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Programowanie obiektowe

TEMAT : KLASY DZIEDZICZENIE

Wykład 7: Pakiety i Interfejsy

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

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

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

Programowanie obiektowe

Kurs WWW. Paweł Rajba.

Języki i metody programowania Java Lab2 podejście obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

KLASY, INTERFEJSY, ITP

Języki i metody programowania Java. Wykład 2 (część 2)

Programowanie obiektowe

Programowanie 3 - Funkcje, pliki i klasy

Wykład 8: klasy cz. 4

Metody Metody, parametry, zwracanie wartości

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

Definicje klas i obiektów. Tomasz Borzyszkowski

Podstawy Języka Java

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

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

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

Materiały do zajęć VII

Java Język programowania

W powyższym kodzie utworzono wyliczenie dni tygodnia.

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Podstawy i języki programowania

1 Atrybuty i metody klasowe

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

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

Obiekty: co i jak. Wykonał: Piotr Pięda dla koła naukowego KNI

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

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Programowanie obiektowe

Mechanizm dziedziczenia

Definiowanie własnych klas

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Programowanie obiektowe

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

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

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

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

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie obiektowe

Programowanie obiektowe

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wykład 2: Podstawy Języka

Programowanie obiektowe w języku

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Programowanie obiektowe - zadania

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

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

Szablony funkcji i klas (templates)

Laboratorium 1 - Programowanie proceduralne i obiektowe

Programowanie obiektowe i zdarzeniowe

UML a kod. C++, Java i C#

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

Programowanie Obiektowe Ćwiczenie 4

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

Języki i techniki programowania Ćwiczenia 2

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

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

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. dr Jarosław Skaruz

Technologie i usługi internetowe cz. 2

Deklaracja struktury w C++

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Programowanie obiektowe

Transkrypt:

Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019

Klasa zbiór pól i metod Obiekt instancja klasy W języku Java wyróżniamy 4 modyfikatory widoczności, definiujące, z jakiego poziomu możemy otrzymać dostęp do składowych klasy: Private dostęp prywatny, dostęp tylko z tej samej klasy Public dostęp publiczny, dostęp z dowolnego miejsca programu Protected dostęp chroniony, dostęp z tej samej klasy, pod-klas (klas dziedziczących) oraz klas z tego samego pakietu Dostęp domyślny, brak modyfikatora (pakietowy) dostęp ze wszystkich klas tego samego pakietu. Uwaga! W przypadku klas, można skorzystać jedynie z modyfikatorów Public oraz pakietowego. Pozostałe 2 modyfikatory dostępne są jedynie dla pól i metod. Modyfikator Klasa Metoda Pole Public X X X Private X X Protected X X Pakietowy X X X Zadeklarowanie klasy jako publicznej nie oznacza, iż wszystkie jej pola i metody muszą być publiczne. Część z nich może posiadać inne modyfikatory. Ogólną strukturę klasy przedstawiono poniżej: public class myfirstclass { // miejsce na pola // miejsce na metody 2

W powyższym przykładzie nie zawarto funkcji public static void main(string[] args) Nie jest ona potrzebna, ponieważ klasa ta ma służyć do dostarczania pól i metod, pozwalających na przetwarzanie danych. W przypadku konieczności wykorzystania określonych danych w programie więcej niż raz, warto rozważyć możliwość utworzenia stałej. Przygotujmy klasę Constants, w której zawrzemy przykładowe stałe. public class Constants { public static final String MOJ_KIERUNEK = "Informatyka"; Dzięki takiej konstrukcji, do stałej MOJ_KIERUNEK, można dostać się z każdego miejsca w programie. Warto zauważyć, iż w deklaracji pojawia się słowo kluczowe final. Znaczenie tego słowa jest różne, w zależności od tego, czy jest używane w kontekście klasy, zmiennej czy metody. Kontekst Klasa Metoda Zmienna Znaczenie Blokada przed dziedziczeniem w programowaniu obiektowym. Klasy oznaczone jako finalne nie mogą służyć jako podstawa do dziedziczenia przez inne klasy. Blokada przed przesłonięciem metody w klasie potomnej. Blokada przed modyfikacją zmiennej (zmienna staje się stałą). Konstruktor to metoda, która odpowiada za tworzenie obiektu. Wywołujemy ją w kodzie w sposób następujący: mojaklasa nazwaobiektu = new mojaklasa(); W podanym przykładzie konstruktor jest konstruktorem domyślnym, który nie posiada parametrów. Wywołanie takiego konstruktora spowoduje, iż utworzony zostanie obiekt, posiadający pola o wartościach domyślnych (0; 0.00; null itd.). Możemy napisać jednak swój własny konstruktor, który pozwoli na utworzenie obiektu o określonych wartościach pól. Utwórzmy klasę Programmer: public class Programmer { String name; String surname; String technology; int age; int experience; double salary; char sex; 3

Wywołanie konstruktora domyślnego, spowoduje utworzenie obiektu o następujących parametrach: Obiekt p został utworzony w sposób następujący: Programmer p = new Programmer(); Zauważmy, że pola w obiekcie przyjęły wartości domyślne, ponieważ konstruktor nie posiadał informacji o sposobie ich inicjalizacji. Napiszmy konstruktor z parametrami, który pozwoli na inicjalizację pól określonymi wartościami. public Programmer (String pname, String psurname, String ptechnology, int page, int pexperience, double psalary, char psex){ name = pname; surname = psurname; technology = ptechnology; age = page; experience = pexperience; salary = psalary; sex = psex; Wywołajmy konstruktor wraz z parametrami: Programmer p2 = new Programmer("Gregory", "House", "Java", 45, 15, 3000.00, 'M'); 4

Jak widać na rysunku, wywołanie konstruktora z parametrami, skutkuje utworzeniem obiektu, zawierającego pola o określonych wartościach. Napisany konstruktor posiada jednak pewną niedoskonałość. Ponieważ w klasie znajduje się 7 pól, konieczne było wymyślenie nazwa dla aż 7 parametrów konstruktora. Spróbujmy napisać go raz jeszcze, bez konieczności długiego zastanawiania się nad nazwami parametrów. public Programmer (String name, String surname, String technology, int age, int experience, double salary, char sex){ this.name = name; this.surname = surname; this.technology = technology; this.age = age; this.experience = experience; this.salary = salary; this.sex = sex; Zauważmy, że w tym przypadku nie pojawiają się nowe nazwy parametrów. Wykorzystano nazwy pól. Takie działanie umożliwia słowo kluczowe this. Słowo kluczowe this umieszczone w metodzie (w tym przypadku konstruktorze) powoduje odniesienie do OBIEKTU, który WYWOŁAŁ metodę. Powyższe linie kodu można tłumaczyć jako: podczas tworzenia obiektu, do pola name podstaw wartość, przekazaną jako parametr name w czasie wywołania konstruktora. Skorzystajmy z naszego nowego konstruktora: 5

Programmer p3 = new Programmer("Sherlock", "Holmes", "JSF", 45, 18, 3200.00, 'M'); Jak widać, pomimo zmian w strukturze konstruktora, jego działanie jest identyczne. UWAGA! W klasie nie mogą znaleźć się 2 konstruktory o identycznych parametrach spowoduje to wyświetlenie błędu. Po dodaniu konstruktora z parametrami, konieczne jest również napisanie konstruktora bezparametrowego (w przypadku chęci dalszego korzystania z konstruktora bezparametrowego). Utwórz pakiet helpers_package, w którym umieścisz klasy Helpers. Napisz klasę ArithmeticHelper, w której zaimplementujesz metody: Dodawanie 2 liczb typu int (metoda powinna przyjąć 2 liczby jako parametry) Odejmowanie 2 liczb typu int (metoda powinna przyjąć 2 liczby jako parametry) Mnożenie 2 liczb typu int (metoda powinna przyjąć 2 liczby jako parametry) Dzielenie 2 liczb typu int (metoda powinna przyjąć 2 liczby jako parametry) Wyszukiwanie największej wartości w tablicy liczb n x n x n Wyszukiwanie najmniejszej wartości w tablicy liczb n x n x n Zmodyfikuje metody tak, by przyjmowały zmienną liczbę argumentów (operator ) 6

Napisz klasę StringOperationHelper, w której zaimplementujesz metody: Wyświetlanie długości zadanego ciągu Usuwanie wybranych znaków w ciągu (ciąg oraz znak do usunięcia powinny zostać przekazane w parametrze) Zamianę w podanym ciągu określonych znaków (jako parametry funkcja powinna przyjąć ciąg znaków, znak do zmiany oraz znak, na który należy dokonać zmiany) Tworzenie tablicy z podanego ciągu. Podziału należy dokonać na podstawie określonego znaku (przekazanego w parametrze). Metoda powinna umożliwiać wykorzystanie kropki jako znaku, według którego nastąpi podział. Porównywanie 2 ciągów znakowych. Metoda powinna zwracać komunikat informujący relacji pomiędzy ciągami. Na poziomie funkcji lub jej wywołania należy zaimplementować wyświetlanie ciągów. Obliczanie wystąpień określonego znaku w ciągu. Metoda powinna być typu int oraz przyjmować ciąg i znak jako parametry. Znajdowanie znaku, który występuje w ciągu najczęściej. Metoda powinna zwracać obiekt, zawierający 2 pola znak oraz ilość wystąpień. Napisz klasę ArrayOperationHelper, w której zaimplementujesz metody: Tworzenie tablicy dwuwymiarowej o wymiarach podanych przez użytkownika (n x m) oraz wypełnianie jej losowymi liczbami z zakresu 0 y (wartość podana przez użytkownika) Tworzenie tablicy dwuwymiarowej o wymiarach podanych przez użytkownika (n x m) oraz wypełnianie jej losowymi liczbami z zakresu podanego przez użytkownika (liczby całkowite). Wyszukiwanie najdłuższego / najkrótszego elementu w tablicy String oraz ich pozycji. Określanie liczby elementów w tablicy dwu wymiarowej liczb całkowitych mniejszej / większej od liczby zadanej przez użytkownika. Wyświetlanie w formie kolumn tablicy liczb całkowitych o wymiarach n x n, dla 100 znajdującego się w zakresie od 0 do 100. Zadbaj o poprawne formatowanie oraz zachowanie odstępuje pomiędzy kolumnami. Przygotuję klasę myarray, zawierającą 3 pola: długość tablicy, długość najdłuższego elementu oraz najdłuższe element. W klasie ArrayOperationHelper napisz metodę, która zwróci obiekt klasy myarray z podstawionymi wartościami. W głównej klasie programu 7

napisz metodę, która wyświetli wynik dla zadanej tablicy (wywołanie metody z klasy ArrayOperationHelper powinno wystąpić w metodzie głównej klasy programu). Napisz klasę CurrencyHelper, w której zaimplementujesz metody: Obliczanie kwoty wraz z podatkiem VAT dla towarów (wykorzystanie stałych) Obliczanie kwoty wraz z podatkiem VAT dla usług (wykorzystanie stałych) Przelicznik walut (jako parametry wprowadzamy kwotę oraz nazwy 2 walut). Wskazówka: do zapisu kwot, należy wykorzystać typ double. 8