Programowanie obiektowe

Podobne dokumenty
Programowanie obiektowe

Programowanie obiektowe

Wykład 04. Programowanie obiektowe. Maciej Wołoszyn 17 marca Spis treści

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe

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

import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

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

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

Programowanie obiektowe

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

Przykład -

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

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

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

Programowanie obiektowe

Programowanie obiektowe

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Kurs programowania. Wykład 9. Wojciech Macyna

Wykład 4: Klasy i Metody

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

Programowanie obiektowe

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

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

Wykład 7: Pakiety i Interfejsy

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

KLASY, INTERFEJSY, ITP

Podejście obiektowe. Tablice (1) obiektów

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Comparable<Klasa_uzytkownika>

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Programowanie w Javie wykład 8 Interfejsy

Podstawy programowania obiektowego

Programowanie obiektowe

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Wstęp do ruby dla programistów javy

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)


DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

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

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

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

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

Platformy Programistyczne Podstawy języka Java

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

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

Programowanie w języku Java. Kolekcje

Programowanie obiektowe

Wykład 2: Podstawy Języka

Polimorfizm. dr Jarosław Skaruz

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

Dokumentacja do API Javy.

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

Programowanie obiektowe

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

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

Podstawy otwartych języków programowania Przechowywanie danych

Definiowanie własnych klas

Programowanie w Javie - wykład 4

TYPY GENERYCZNE (GENERICS)

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

Metody Metody, parametry, zwracanie wartości

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Dziedziczenie. dr Jarosław Skaruz

Podejście obiektowe do budowy systemów rozproszonych

Kolekcje - pakiet Java Collections Framework

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Java. Programowanie Obiektowe Mateusz Cicheński

Podstawy Języka Java

11.6 Klasa do obsługi liczb wymiernych

Programowanie w języku Java

Algorytmy z powrotami. Algorytm minimax

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

Programowanie w Javie - wykład 3

Aplikacje w Javie- wykład 11 Wątki-podstawy

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

Programowanie obiektowe

Programowanie i projektowanie obiektowe

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

Klasy i obiekty cz II

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

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

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

Polimorfizm a klasy generyczne w języku Java. Zdzisław Spławski 1

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

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Db4o obiektowa baza danych wersja.net

Przypomnienie o klasach i obiektach

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

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

przygotował: Bazy danych Paweł Kasprowski Wersja 2006Z

Programowanie obiektowe i język Java

Transkrypt:

Programowanie obiektowe Wykład 13: RTTI 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 1 Po co informacja o typie obiektu? Polimorfizm Kolekcje Deserializacja 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 2 1

Przykład: rzutowanie w dół import java.util.*; class Kształt { void rysuj() { System.out.println(this + ".rysuj()"); class Koło extends Kształt { public String tostring() { return "Koło"; class Kwadrat extends Kształt { public String tostring() { return "Kwadrat"; class Trójkąt extends Kształt { public String tostring() { return "Trójkąt"; Jak sprawdzić typ obiektu? public class Kształty { public static void main(string[ ] args) { List s = new ArrayList(); s.add(new Koło()); s.add(new Kwadrat()); s.add(new Trójkąt()); Iterator e = s.iterator(); while(e.hasnext()) ((Kształt)e.next()).rysuj(); A co gdybyśmy chcieli rzutować np. na Koło? Wyjątek: ClassCastException! 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 3 Operator instanceof while(e.hasnext()) { Object o=e.next(); if (o instanceof Koło) ((Kolo)o).draw(); if (o instanceof Kwadrat) ((Kwadrat)o).draw(); if (o instanceof Trójkąt) ((Trójkąt)o).draw(); 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 4 2

Klasa Class Zawiera metody udostępniające wszystkie informacje o klasie Instancja klasy tworzona w chwili pierwszego odwołania do klasy Przechowywana w pliku.class Używana do tworzenia wszystkich obiektów danej klasy 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 5 Metoda forname() Utworzenie instancji klasy Class na podstawie nazwy klasy: Class c=class.forname( Koło ); Wykonuje inicjalizację pól statycznych! Przykład: sprawdzenie czy klasa jest dostępna try { Class.forName( Klasa"); catch(classnotfoundexception e) { System.out.println( Nie można znaleźć pliku Klasa.class"); 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 6 3

Uzyskanie dostępu do obiektu Class Class c=o.getclass(); Class c=kolo.class String name=c.getname(); Object o=c.newinstance(); c.isinstance(o) Koło.class.isInstance(o) == o instanceof Koło 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 7 Class dla typów prostych boolean.class == Boolean.TYPE char.class == Character.TYPE byte.class == Byte.TYPE short.class == Short.TYPE int.class == Integer.TYPE long.class == Long.TYPE float.class == Float.TYPE double.class == Double.TYPE void.class == Void.TYPE 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 8 4

Przykłady Class c = text".getclass(); Class dla klasy String byte[ ] bytes = new byte[1024]; Class c = bytes.getclass(); Class c = int[][][].class; Class dla tablicy Set<String> s = new HashSet<String>(); Class c = s.getclass(); Class dla klasy HashSet 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 9 Odzwierciedlenia Pakiet: java.lang.reflect : public final class Constructor public final class Field get(), set() public final class Method invoke() Class c=o.getclass(); Class sup=c.getsuperclass(); Class [ ] i=c.getinterfaces(); Method [ ] m=c.getmethods(); -- również dziedziczone!!! Field [ ] f=c.getfields(); Constructor[ ] constr=c.getconstructors(); 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 10 5

Przykład import java.lang.reflect.*; if(args.length == 1) { import java.util.regex.*; for(int i = 0; i < m.length; i++) System.out.println( public class ShowMethods { p.matcher(m[i].tostring()).replaceall("")); private static final String usage = for(int i = 0; i < ctor.length; i++) "usage: \n" + System.out.println( "ShowMethods qualified.class.name\n" + p.matcher(ctor[i].tostring()).replaceall("")); "To show all methods in class or: \n" + lines = m.length + ctor.length; "ShowMethods qualified.class.name word\n" + else { "To search for methods involving 'word'"; for(int i = 0; i < m.length; i++) private static Pattern p = Pattern.compile("\\w+\\."); if(m[i].tostring().indexof(args[1])!= -1) { public static void main(string[ ] args) { System.out.println( if(args.length < 1) { p.matcher(m[i].tostring()).replaceall("")); System.out.println(usage); lines++; System.exit(0); for(int i = 0; i < ctor.length; i++) int lines = 0; if(ctor[i].tostring().indexof(args[1])!= -1) { try { System.out.println(p.matcher( Class c = Class.forName(args[0]); ctor[i].tostring()).replaceall("")); Method[] m = c.getmethods(); lines++; Constructor[] ctor = c.getconstructors(); catch(classnotfoundexception e) { System.out.println("No such class: " + e); 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 11 Pytania 1. Na czym polega identyfikacja typu podczas wykonania? 2. Kiedy potrzebna jest identyfikacja typu? 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 12 6

Koniec 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 13 7