Programowanie obiektowe

Podobne dokumenty
TYPY GENERYCZNE (GENERICS)

Dawid Gierszewski Adam Hanasko

Przykład -

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

Metody sparametryzowane

Programowanie obiektowe

Programowanie obiektowe

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

Programowanie obiektowe

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

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

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

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

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

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

Typy uogólnione. Programowanie obiektowe. Jacek Sroka na podstawie materiałów Janusza Jabłonowskiego. 8 kwietnia 2013

Polimorfizm. dr Jarosław Skaruz

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

Kurs programowania. Wykład 9. Wojciech Macyna

Programowanie obiektowe

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

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

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie Komputerów

Typy uogólnione. Robert A. Kªopotek Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW

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

Programowanie obiektowe

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Java: interfejsy i klasy wewnętrzne

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

Dokumentacja do API Javy.

Programowanie obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

1 Atrybuty i metody klasowe

Definicje klas i obiektów. Tomasz Borzyszkowski

Programowanie obiektowe

Wstęp do ruby dla programistów javy

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

Programowanie w Internecie. Java

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

Podstawy Programowania

Wykład 4: Klasy i Metody

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

Typy sparametryzowane

Przypomnienie o klasach i obiektach

Platformy Programistyczne Podstawy języka Java

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

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

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);

2 Tablice Tablice jednowymiarowe Tablice wielowymiarowe... 4

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

Programowanie obiektowe i zdarzeniowe

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Programowanie obiektowe

Programowanie obiektowe

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

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

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe w języku

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

Aplikacje w środowisku Java

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

Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór

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

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

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

Klasy abstrakcyjne i interfejsy

Tworzenie aplikacji w języku Java

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

Aplikacje w środowisku Java

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Programowanie obiektowe

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

Programowanie obiektowe

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

Programowanie w Javie wykład 9 Klasy wewnętrzne, klasy anonimowe Klasy opakowujące

Scala. Obiektowo-funkcyjny język programowania. Zbyszek Skowron

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

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

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

Języki i metody programowania Java INF302W. Wykład 1 (część 1) na podstawie Autor Dr inż. Zofia Kruczkiewicz

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Wywoływanie metod zdalnych

Rozdział 4 KLASY, OBIEKTY, METODY

Wykład 6: Dziedziczenie

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

Programowanie w Javie wykład 8 Interfejsy

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

Programowanie obiektowe

Aplikacja wielowątkowa prosty komunikator

Java niezbędnik programisty spotkanie nr 9. Java 2 Platform, Standard Edition 5.0

Spis treści. 1 Java T M

KLASY, INTERFEJSY, ITP

Programowanie w środowiskach graficznych. Wykład 3 Język C#

Transkrypt:

Programowanie obiektowe Wykład 7: Typy uogólnione. Stringi. 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 1 Jak operować na danych różnych typów? Wymagana zgodność typów Rzutowanie w górę Tylko na typ bazowy Bezpieczne Rzutowanie w dół: Tylko na typ oryginalny lub bazowy typu oryginalnego Może spowodować błędy!!! A może typ jako parametr?? 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 2 1

Przykład: uniwersalny pojemnik na obiekty public class Box { private Object object; public void add(object object) { this.object = object; public Object get() { return object; Box integerbox = new Box(); integerbox.add(new Integer(10)); Integer someinteger = (Integer) integerbox.get(); System.out.println(someInteger); Box integerbox = new Box(); integerbox.add("10"); Integer someinteger=(integer)integerbox.get(); System.out.println(someInteger); Exception in thread "main" java.lang.classcastexception: java.lang.string cannot be cast to java.lang.integer at BoxDemo.main(BoxDemo.java:6) 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 3 Klasy sparametryzowane typami class Nazwa<T1, T2, T3> { Nazwa<Integer, String, Float> o; new Nazwa<Integer, String, Float>(); Typ musi być klasą 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 4 2

Przykład: uogólniony pojemnik na obiekty public class Box <T>{ private T object; public void add(t object) { this.object = object; public T get() { return object; Box<Integer> integerbox = new Box<Integer>(); integerbox.add(new Integer(10)); Integer someinteger = integerbox.get(); System.out.println(someInteger); Box<Integer> integerbox = new Box<Integer>(); integerbox.add("10"); // Błąd kompilacji Integer someinteger=integerbox.get(); System.out.println(someInteger); 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 5 Dziedziczenie po klasach sparametryzowanych typami public class Para<T1, T2> Dziedziczenie po klasie ukonkretnionej: public class ParaInt extends Para<Integer, Integer> { Dziedziczenie po klasie sparametryzowanej: public class ParaJednorodna<T3> extends Para<T1,T2>{ 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 6 3

Metody parametryzowane typami public <U> void metoda(u u){ o.<integer>metoda(5); 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 7 Ograniczenia na typy sparametryzowane <U extends Number> U musi być klasą dziedziczącą po Number <U implements MojInterfejs> <U extends Number & MojInterfejs> 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 8 4

Typ nieznany:? <? extends T> <?> == <? extends Object> <? super T> 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 9 Podsumowanie typów uogólnionych Typy proste nie mogą być parametrami Ale jest autoboxing (od Java 1.5): int i1; Integer i2=new Integer(); i1=i2; // dawniej: i1=i2.value; I2=i1; // dawniej : i2.value=i1; Nie można tworzyć obiektów typu będącego parametrem: class Klasa<T>{ T o=new T(); Rzutowanie na typ uogólniony generuje ostrzeżenia: pi = (Para<Integer, Integer>) p; Typy uogólnione są konwertowane podczas kompilacji na typy surowe 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 10 5

Przykład 1 class FArray { public static <T> T[ ] fill(t[ ] a, Generator<T> gen) { for(int i = 0; i < a.length; i++) a[i] = gen.next(); return a; public class PrimitiveGenericTest { public static void main(string[ ] args) { String[ ] strings = FArray.fill( new String[7], new RandomGenerator.String(10)); for(int i=0; i<strings.length; i++) System.out.println(strings[i]); Integer[ ] integers = FArray.fill( new Integer[7], new RandomGenerator.Integer()); for(int i=0; i<integers.length; i++) System.out.println(integers[i]); // int[ ] b = FArray.fill(new int[7], new RandIntGenerator()); 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 11 Przykład 2 public class Erased<T> { private final int SIZE = 100; public static void f(object arg) { T var = new T(); T[ ] array = new T[SIZE]; T[ ] array = (T)new Object[SIZE]; // Unchecked warning 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 12 6

Przykład 3 class GenericBase<T> { private T element; public void set(t arg) { arg = element; public T get() { return element; class Derived1<T> extends GenericBase<T> { class Derived2 extends GenericBase { // class Derived3 extends GenericBase<?> { // Strange error: // unexpected type found :? // required: class or interface without bounds public class ErasureAndInheritance { @SuppressWarnings("unchecked") public static void main(string[] args) { Derived2 d2 = new Derived2(); Object obj = d2.get(); d2.set(obj); // Warning 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 13 String Nie można zmienić długości (np. dodać znaki, usunąć znaki itp.) Metody: charat(), concat(), indexof(), length(), replace(), touppercase(), tolowercase(), substring() itp. Literały też są obiektami: np. Napis.length() Operator + jako konkatenacja: string + 5 -> string5 5+ string ->? 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 14 7

StringBuilder Modyfikowalny string Metody: append(), delete(), insert(), reverse(), itp. StringBuffer - wersja dla programów wielowątkowych. 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 15 Pytania 1. Jakie konstrukcje (klasy, interfejsy, parametry metod, wartość zwracana przez metodę, pole klasy, zmienna lokalna, obiekt) mogą być sparametryzowane typem? 2. Jakie są ograniczenia typów uogólnionych? 3. Jaka jest różnica pomiędzy typami uogólnionymi a rzutowaniem? 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 16 8

Koniec 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 17 9