Podstawy Języka Java

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

Technologie i usługi internetowe cz. 2

Podstawy Programowania Obiektowego

Programowanie obiektowe - 1.

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

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

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

Dokumentacja do API Javy.

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Definiowanie własnych klas

Programowanie obiektowe

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

Enkapsulacja, dziedziczenie, polimorfizm

Wykład 4: Klasy i Metody

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

Język programowania. Andrzej Bobyk

Materiały do zajęć VII

Java Język programowania

Programowanie obiektowe

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Do czego służą klasy?

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

Deklaracja i definicja metod, zwracanie wartości z metod, przekazywania parametrów do metod

Dziedziczenie. dr Jarosław Skaruz

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

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Aplikacje w środowisku Java

Programowanie obiektowe

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

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

Modelowanie i Programowanie Obiektowe

Mechanizm dziedziczenia

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

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

Wykład 6: Dziedziczenie

Programowanie obiektowe

Definiowanie własnych klas

Projektowanie aplikacji internetowych laboratorium

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

Mechanizm dziedziczenia

Polimorfizm. dr Jarosław Skaruz

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

Aplikacje w środowisku Java

Programowanie w Javie - wykład 3

Klasy i obiekty cz II

Dziedziczenie. Zadanie 1

Programowanie obiektowe i zdarzeniowe

Wykład 7: Pakiety i Interfejsy

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java:

PHP 5 język obiektowy

Programowanie obiektowe w języku

1 Atrybuty i metody klasowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Oracle PL/SQL. Paweł Rajba.

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

Programowanie obiektowe

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

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

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

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

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

KLASY, INTERFEJSY, ITP

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

Multimedia JAVA. Historia

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

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

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

Podstawy programowania obiektowego

Programowanie w Internecie. Java

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

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

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

TEMAT : KLASY DZIEDZICZENIE

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

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

KLASY cz.1. Dorota Pylak

Rozdział 4 KLASY, OBIEKTY, METODY

Kurs WWW. Paweł Rajba.

Technologie obiektowe

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Do czego służą klasy?

Programowanie komputerowe. Zajęcia 7

Wykład 2: Podstawy Języka

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

Klasy abstrakcyjne i interfejsy

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

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Laboratorium 1 - Programowanie proceduralne i obiektowe

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

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Programowanie obiektowe

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

Transkrypt:

Podstawy Języka Java

Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli procedury, w tym wypadku nazywane: metodami). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów.

Czym jest obiekt w programowaniu obiektowym Obiekt to pojemnik do przechowywania zmiennych i funkcji tematycznie ze sobą powiązanych. Obiekty w programowaniu obiektowym charakteryzują się: atrybutami (cechy, stany, pola), operacjami, które można na nich wykonać (usługi, polecenia, metody). Na przykład jeśli obiektem jest samochód, to atrybutami mogą być: długość, szerokość, prędkość jazdy. Natomiast, operacjami jakie można wykonywać na tym obiekcie, mogą być: ustaw długość, odczytaj szerokość, zwiększ prędkość.

Czym jest klasa w programowaniu obiektowym Klasa jest szablonem, ż którego tworzy się obiekty. Jeśli klasy są foremkami do robienia ciastek, to obiekty są samymi ciastkami. Konstruując obiekt tworzymy egzemplarz (instancję) klasy. Wszystko co piszemy w Javie znajduje się w jakiejś klasie. W standardowej bibliotece znajduje się kilka tysięcy klas. Jednak konieczne jest tworzenie własnych klas do opisu obiektów rozwiązujących problemy związane z konkretnym programem.

c l a s s Nazwa { // d e k l a r a c j e p ó l typ p o l e 1 ;... typ polen ; // d e k l a r a c j e metod typ metoda1 ( l i s t a parametrów ) { // t r e ś ć metody... typ metodam ( l i s t a parametrów ) { // t r e ś ć metody

p u b l i c c l a s s Samochod { i n t d l u g o s c ; i n t s z e r o k o s c ; i n t p r e d k o s c J a z d y ; p u b l i c i n t g e t D l u g o s c ( ) { r e t u r n d l u g o s c ; p u b l i c void s e t D l u g o s c ( i n t d l u g o s c ) { t h i s. d l u g o s c = d l u g o s c ; p u b l i c i n t g e t S z e r o k o s c ( ) { r e t u r n s z e r o k o s c ; p u b l i c void s e t S z e r o k o s c ( i n t s z e r o k o s c ) { t h i s. s z e r o k o s c = s z e r o k o s c ; p u b l i c i n t g e t P r e d k o s c J a z d y ( ) { r e t u r n p r e d k o s c J a z d y ; p u b l i c void s e t P r e d k o s c J a z d y ( i n t p r e d k o s c J a z d y ) { t h i s. p r e d k o s c J a z d y = p r e d k o s c J a z d y ;

Tworzenie obiektu, konstruktory i destruktory Konstruktor to specjalna metoda umożliwiająca tworzenie obiektów. Konstruktor domyślny: new Samochod(); lub Samochod sam = new Samochod(); Konstruktor ustawiający: public Samochod(int dlugoscn, int szerokoscn, int predkoscjazdyn) { dlugosc = dlugoscn; szerokosc = szerokoscn; predkoscjazdy = predkoscjazdyn; Destruktor to specjalna metoda umożliwiająca niszczenie obiektów. W Javie nie ma destruktorów. Jest za to mechanizm Garbage Collector.

Zadania Zadanie 1. Stwórz nowy projekt w NetBeans i klasę Samochod z polami i metodami opisanymi powyżej. Stwórz dwa obiekty tej klasy sam1 i sam2 i ustaw im początkowe wartości na dowolne liczby nieujemne (aktualna prędkość ma być liczbą z przedziału [0,100]).

Główne cechy programowania obiektowego Abstrakcja Enkapsulacja Dziedziczenie Polimorfizm

Abstrakcja Każdy obiekt w programie (definiowany za pomocą abstrakcyjnego typu jakim jest klasa) 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 zaimplementowane są jego cechy.

c l a s s Punkt2D { i n t x, y ; Punkt2D ( i n t x, i n t y ) { t h i s. x = x ; t h i s. y = y ;

Zadanie Zadanie 2. Dopisz metody, które będą pobierać współrzędne x i y punktu. Dopisz metody, które ustawią współrzędne x i y punktu na określoną wartość. Dopisz metodę liczbawspolrzednych(), która pobierze liczbę współrzędnych punktu. Przedefiniuj metodę tostring() tak aby wypisywała reprezentację punktu.

Enkapsulacja (hermetyzacja) Enkapsulacja (hermetyzacja) to ukrywanie implementacji. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko własne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój interfejs, który określa dopuszczalne metody współpracy. W Javie klasycznie mamy cztery modyfikatory dostępu: private - do danych można się dostać tylko z wnętrza danej klasy public dane są ogólnie dostępne protected do danych można się dostać z wnętrza danej klasy, klas pochodnych i z klas tego samego pakietu package do danych można się dostać w obrębie tego samego pakietu

Zadanie Zadanie 3. Przerób klasę Punkt2D zachowując koncepcję enkapsulacji pól i metod. Utwórz w klasie Punkt2D pole statyczne liczbapunktow, które będzie zliczać liczbę utworzonych punktów w programie. Utwórz w klasie Punkt2D metodę odlegloscodzera(), która wyznaczy odległość punktu od zera.

Zadania Zadanie 4. Napisz zgodnie z zasadami programowania obiektowego program, który oblicza pole prostokąta. Klasa powinna zawierać trzy metody: czytajdane() - metoda umożliwia wprowadzenie do programu długości boków a i b z klawiatury. W programie należy przyjąć, że a, b oraz zmienna pole są typu double. przetworzdane() - metoda oblicza pole prostokąta według wzoru: pole = a b. wyswietlwynik() - metoda wyświetla długości boków a i b oraz wartość zmiennej pole w określonym formacie. Dla zmiennych a, b oraz pole należy przyjąć format wyświetlania ich na ekranie z dwoma miejscami po przecinku.

Pakiety Program w języku Java to zbiór klas. Klasy zebrane są w pakiety aby pogrupować je według znaczenia. Kluczowe słowo do tworzenia pakietu, to package. package zaj5; public class Proba { public static void main(string[] args) { System.out.println("Hello World"); Nazwy pakietów zwyczajowo pisze się małymi literami. Kolejne poziomy zagnieżdżenia pakietów oddziela się od siebie kropkami. Przykłady pakietów: java.lang, java.util, java.io, java.applet, java.awt

Import klas Sama nazwa klasy nie musi identyfikować jej w sposób jednoznaczny. Należy określić pakiet w obrębie którego została ona zdefiniowana. Aby skorzystać z klasy zamkniętej w obrębie jakiegoś pakietu należy ją zaimportować przy pomocy polecenia import. package zaj52; public class Proba2 { public static void pisz(string s) { System.out.println(s); package zaj51; import zaj52.proba2; public class Proba1 { public static void main(string[] args) { Proba2.pisz( Ala"); System.out.println("Hello World");

Dziedziczenie Dziedziczeniem (z ang. inheritance) w programowaniu obiektowym nazywamy mechanizm współdzielenia funkcjonalności pomiędzy klasami. Klasa może dziedziczyć po innej klasie, co oznacza, że oprócz swoich własnych atrybutów oraz zachowań, uzyskuje także te pochodzące z klasy, z której dziedziczy. Klasa dziedzicząca jest nazywana klasą pochodną lub potomną (z ang. subclass), klasa, z której następuje dziedziczenie jest nazywana klasą bazową (z ang. superclass).

Klasa Punkt3D (klasa rozszerzająca Punkt2D) public class Punkt3D extends Punkt2D{ private int z; public Punkt3D(int x, int y, int z){ super(x,y); this.z=z; public int getz() { return z; public void setz(int z) { this.z = z;

Zadanie Zadanie 5. 1 Przerób w klasie Punkt3D metodę liczbawspolrzednych() tak aby działała prawidłowo. 2 Przerób w klasie Punkt3D metodę tostring() aby prawidłowo zwracała reprezentację obiektu. 3 Przerób w klasie Punkt3D metodę odlegloscodzera(), która poprawnie wyznaczy odległość punktu od zera.

Polimorfizm Polimorfizm w programowaniu obiektowym to cecha dzięki której jedna metoda (o tej samej nazwie) może być stosowana do wykonania różnych zadań w zależności od tego na rzecz którego obiektu została wywołana.

Zadanie Zadanie 6. Tworzymy tablicę 10 elementową do przechowywania obiektów typu Punkt2D. Punkt2D[] tabpunktow = new Punkt2D[10]; W pętli dla i = 1...10 losujemy liczbę p z przedziału [0, 1]. Jeśli liczba p jest mniejsza od 1/2, to tworzymy obiekt typu Punkt2D(x,y), gdzie x pierwsza cyfra po przecinku liczby p, y druga cyfra po przecinku liczby p, jeśli z kolei liczba p jest większa równa od 1/2, to wówczas tworzymy obiekt typu Punkt3D(x,y,z), gdzie x pierwsza cyfra po przecinku liczby p, y druga cyfra po przecinku liczby p, z trzecia cyfra po przecinku liczby p. Wyświetl w pętli od 1...10 informację o liczbie współrzędnych każdego z utworzonych obiektów. Zauważ, że nie wiedząc czy na przykład pod tabpunktów[4] znajduje się obiekt typu Punkt2D czy Punkt3D program poprawnie wyświetla 2 lub 3 (to jest zaleta polimorfizmu właśnie.)

Zadanie Zadanie 7. Dopisz w klasie Punkt2D metodę public double odl(punkt a){... ; która obliczy odległość dwóch punktów: Punkt2D p1 = new Point2D(2,1); Punkt2D p2 = new Point2D(1,2); p1.odl(p2); Napisz teraz metodę boolean czytrojkat(p1,p2,p3), która sprawdzi, czy punkty p1, p2 i p3 są wierzchołkami trójkąta.