KLASY, INTERFEJSY, ITP

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

Wykład 7: Pakiety i Interfejsy

Enkapsulacja, dziedziczenie, polimorfizm

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Dokumentacja do API Javy.

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

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Kurs WWW. Paweł Rajba.

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

Aplikacje w środowisku Java

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

1 Atrybuty i metody klasowe

Programowanie w Internecie. Java

TYPY GENERYCZNE (GENERICS)

Programowanie obiektowe

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Programowanie obiektowe

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

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

Podstawy Języka Java

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

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

Programowanie obiektowe

PHP 5 język obiektowy

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Aplikacje RMI

Wykład 4: Klasy i Metody

Programowanie obiektowe

Programowanie obiektowe

Polimorfizm. dr Jarosław Skaruz

Programowanie obiektowe

Definicje klas i obiektów. Tomasz Borzyszkowski

Współbieżność w środowisku Java


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

PROGRAMOWANIE DYNAMICZNE

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

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

Programowanie obiektowe i zdarzeniowe

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Ćwiczenie 1. Przygotowanie środowiska JAVA

Definiowanie własnych klas

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Technologie i usługi internetowe cz. 2

Programowanie obiektowe

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

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

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Programowanie obiektowe

Programowanie obiektowe. Wykład 03. Maciej Wołoszyn 17 marca Polimorfizm oraz wczesne i późne wiazanie

Klasy i obiekty cz II

Dziedziczenie. Tomasz Borzyszkowski

Java niezbędnik programisty spotkanie nr 3. Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja...

Klasy abstrakcyjne, interfejsy i polimorfizm

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

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

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

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

Projektowanie aplikacji internetowych laboratorium

Programowanie obiektowe

Aplikacje RMI Lab4

Platformy Programistyczne Podstawy języka Java

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

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie w Javie - wykład 3

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

Java Język programowania

Rozdział 4 KLASY, OBIEKTY, METODY

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

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

2. Składnia, środowisko i konwencje w Javie

Podstawy i języki programowania

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

Systemy Rozproszone - Ćwiczenie 6

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

JAVA- wykład 2 Klasy

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

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

Podstawy programowania III

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Programowanie obiektowe

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

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

Spis treści. 1 Java T M

Przykład -

Programowanie obiektowe

WSPÓŁBIEŻNOŚĆ. MATERIAŁY:

Platformy Programistyczne Wykład z Javy dla zaawansowanych

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Pakiety i interfejsy. Tomasz Borzyszkowski

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

package pakieta; import pakietb.b; package pakietb; public class B { B(){} public class A { private B b; A(B b) { this.b = b; } }

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

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

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Wywoływanie metod zdalnych

Transkrypt:

KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 1

DWIE KLASY public class Klasa1{ public void metoda1(){ public class Klasa2{ public void metoda2(){ Klasa1 k1; k1 = new Klasa1(); k1.metoda1(); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 2

KLASY package pakiet.podpakiet; public class Klasa { public int publiczny; // public - dostępny wszędzie protected int chroniony; // dostępny tylko w danej klasie, klasach // potomnych i klasach z tego samego pakietu int zwykly; // dostępny tylko w danej klasie i klasach z tego samego // pakietu private int prywatny; // dostępny tylko dla metod tej klasy protected Klasa(){ // konstruktor moze nic nie robic, moze go nie byc, // nie musi byc publiczny public Klasa(int a, int b, int c, int d){ this.publiczny = a; this.prywatny = b; this.chroniony = c; this.zwykly = d; http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 3

KLASY public void set(){ this.publiczny = 7; this.prywatny = 13; this.chroniony = 27; this.zwykly = 11; public void print(){ System.out.println("publiczny: " + this.publiczny); System.out.println("prywatny: " + this.prywatny); System.out.println("chroniony: " + this.chroniony); System.out.println("zwykly: " + this.zwykly); System.out.println(); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 4

KLASY http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 5

KLASY public static void main(string args[]){ Klasa k1 = new Klasa(); k1.print(); k1.set(); k1.print(); Klasa k2 = new Klasa(1,2,3,4); k2.print(); URUCHOMIENIE: java pakiet.podpakiet.klasa plik Klasa.class musi sie znajdowac w podkatalogu./pakiet/podpakiet/ http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 6

PAKIETY Klasy można grupować w pakiety. Nazwa pakietu, do którego należy klasa jest podana w pliku defniującym klasę: package pakiet.podpakiet; Jeśli chcemy użyć klasy z innego pakietu niż nasz, musimy ją uprzednio zaimportować: import pakiet.podpakiet.klasa; lub import pakiet.podpakiet.*; hierarchia pakietów jest odwzorowana w systemie plików w hierarchie katalogów. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 7

KLASY - KONWENCJE nazwa pakietu: z małej litery, nazwa klasy: z DUŻEJ litery, nazwa atrybutu: z małej litery, nazwa metody: z małej litery, nazwa zmiennej: z małej litery, stosujemy przedrostki określające typ zmiennych, np. ivalue, sname. nazwy pakietów odwrotne nazwy domenowe, np. pl.edu.uj.fais.java.wyklad2 http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 8

ZMIENNE I METODY STATYCZNE public class Klasa1{ public static void metoda1(){ public class Klasa2{ public void metoda2(){ Klasa1.metoda1(); Atrybuty i metody statyczne są związane z klasą a nie z jej instancjami (obiektami). Metody statyczne nie mogą więc bezpośrednio wywoływać zwykłych metod lub korzystać ze zwykłych atrybutów, gdyż one są określone wyłącznie w kontekscie obiektów. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 9

ZMIENNE I METODY STATYCZNE public class Klasa1{ static{ // jawna inicjalizacja zmiennych statycznych Atrybuty statyczne są inicjalizowane bezpośrednio po załadowaniu klasy przez JVM. Atrybuty zwykłe (niestatyczne) są inicjowane w momencie utworzenia obiektu (wywołania konstruktora). Zadeklarowane a niezainicjowane atrybuty są ustawiane na 0 lub null. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 10

ZMIENNE I METODY STATYCZNE public class OrderTest { static{ System.out.println("static"); public OrderTest(){ System.out.println("constructor"); public static void main(string[] args){ System.out.println("main: begin"); OrderTest o; System.out.println("main: middle"); o = new OrderTest(); System.out.println("main: end"); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 11

KLASY ABSTRAKCYJNE public abstract class AbstractClass { public abstract int dosomething(); public int dosomethingelse(){ public class SpecificClass extends AbstractClass{ public int dosomething(){ Klasa abstrakcyjna to klasa, której jedna z metod jest abstrakcyjna. Nie można bezpośrednio tworzyć instancji klasy abstrakcyjnej. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 12

DZIEDZICZENIE public class AnyClass extends AnotherClass{ Klasa może mieć tylko jednego, bezpośredniego rodzica (inaczej niż w C++). Jeśli klasa nie posiada rodzica, dziedziczy automatycznie po klasie Object (java.lang.object). W związku z tym instancja dowolnej klasy jest obiektem (instancją klasy Object). http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 13

INTERFEJSY public interface InterfaceExample { public void method1(); public int method2(double i); public AnotherInterface method3(anyclass ac, AnyInterface ai); public class ImplementationClass implements InterfaceExample, OtherIf { public void method1(){ Interfejsy posiadają hierarchię dziedziczenia, jednak jest ona zupełnie niezależna od hierarchii klas. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 14

JAVADOC TryAndCheck.java import java.io.ioexception; /** * Klasa umożliwiająca zgadywanie liczby, ktora wylosowal komputer * @author Kubus Puchatek */ public class TryAndCheck { private int number; /** * konstruktor, w nim odbywa sie losowanie liczby */ public TryAndCheck(){ this.number = (int)(math.random()*10); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 15

JAVADOC TryAndCheck.java (c.d.) /** * sprawdza, czy podana wartosc jest wieksza, mniejsza badz rowna * wylosowanej liczbie * @param iv * @return -1 gdy iv jest mniejsza, 1 gdy większa, 0 gdy rowna, */ public byte check(int iv){ if (iv<this.number) return -1; if (iv>this.number) return +1; return 0; http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 16

JAVADOC TryAndCheck.java (c.d.) /** * metoda uruchamiana automatycznie. Przeprowadza rozgrywke * @param args nieobslugiwane * @throws IOException w przypadku niepoprawnych danych */ public static void main(string[] args) throws IOException{ TryAndCheck play = new TryAndCheck(); int res; char c; http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 17

JAVADOC TryAndCheck.java (c.d.) do{ c = (char)system.in.read(); // odczytujemy znak res = play.check(integer.valueof(character.tostring(c))); c = (char)system.in.read(); // odczytujemy [Enter] if(res<0) System.out.println("Za ma\u0142o"); if(res>0) System.out.println("Za du\u017co"); while(res!=0); System.out.println("Gratulacje"); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 18

JAVADOC AUTOMATYCZNE GENEROWANIE DOKUMENTACJI javadoc TryAndCheck.java http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 19

ĆWICZENIA Proszę zaimplementować klasę reprezentującą liczbę zespoloną, posiadającą metody umożliwiające dodawanie, mnożenie i dzielenie takich liczb, Proszę zaimplementować klasę abstrakcyjną reprezentującą funkcję jednej zmiennej posiadającą metodę abstrakcyjną double getvalue(double x) oraz zwykłą metodę double findminimum(double a, double b), która znajduje lokalne minimum funkcji w przedziale [a,b] http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 20

DZIĘKUJĘ ZA UWAGĘ