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

Save this PDF as:
 WORD  PNG  TXT  JPG

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

1 Programowanie obiektowe Wykład 03 Maciej Wołoszyn 17 marca 2009 Spis treści 1 Polimorfizm oraz wczesne i późne wiazanie Metody i klasy abstrakcyjne Polimorfizm a tworzenie i usuwanie obiektów Interfejsy Implementacja wielu interfejsów Kolizje nazw Dziedziczenie Grupowanie stałych Klasy wewnętrzne Anonimowe klasy wewnętrzne Klasy zagnieżdżone Tworzenie obiektów Dziedziczenie Zastosowanie Polimorfizm oraz wczesne i późne wiazanie wykorzystanie polimorfizmu wymaga mechanizmu tzw. późnego wiazania (late binding albo dynamic binding albo run-time binding) wybór uruchamianej metody nastę- Proszę o przesyłanie na ten adres informacji o znalezionych błędach, literówkach oraz propozycji zmian i uzupełnień. Dokument przygotowano za pomocą systemu LATEX. Wszelkie prawa zastrzeżone. 1

2 Programowanie obiektowe. Wykład 03 2 puje dopiero w trakcie działania programu możliwe dzięki rzutowaniu w górę (upcasting) czyli traktowaniu referencji do obiektu jako referencji do typu bazowego w większości przypadków metody w języku Java są uruchamiane z wykorzystaniem późnego wiazania nie dotyczy to jedynie metod typu static i final (przypomnienie: metody private w praktyce są również final) chociaż metody final są nieco efektywniejsze w działaniu (ze względu na wczesne wiązanie), to nie należy się przy ich tworzeniu kierować wydajnością, ale raczej organizacją hierarchii obiektów class Dane { void pokaz(){system.out.println("dane"); class Liczby extends Dane { void pokaz(){system.out.println("1 2"); class Litery extends Dane { void pokaz(){system.out.println("a B"); Dane d0,d1,d2; d0 = new Dane(); d1 = new Liczby(); d2 = new Litery(); d0.pokaz(); d1.pokaz(); d2.pokaz(); dane 1 2 A B class Dane { static void info(){ System.out.println("info:Dane");

3 Programowanie obiektowe. Wykład 03 3 class Liczby extends Dane { static void info(){ System.out.println("info:Liczby"); Dane d0,d1; d0 = new Dane(); d1 = new Liczby(); d0.info(); d1.info(); info:dane info:dane class Dane { private void test() { System.out.println("test:priv"); class Litery extends Dane { public void test() { System.out.println("test:publ"); Dane d2; d2 = new Litery(); // d2.test(); /* ZLE! */ ((Litery)d2).test(); // OK, ale... test:publ 1.1 Metody i klasy abstrakcyjne odpowiednik czysto wirtualnych funkcji w C++

4 Programowanie obiektowe. Wykład 03 4 umieszcza się jedynie deklarację takiej metody (poprzedzoną słowem kluczowym abstract), bez definicji; np. abstract String opis(); każda klasa zwierająca jedną lub więcej metod abstrakcyjnych jest klasą abstrakcyjną i musi być zdefiniowana z użyciem modyfikatora abstract abstract class Dane { static void info() { System.out.println("info:Dane"); abstract void pokaz(); class Liczby extends Dane { static void info() { System.out.println("info:Liczby"); void pokaz() { System.out.println("1 2"); Dane d0,d1,d2; // d0 = new Dane(); /* ZLE! */ d1 = new Liczby(); d1.pokaz(); Dane.info(); d1.info(); 1 2 info:dane info:dane klasa dziedzicząca po klasie abstrakcyjnej musi albo definiować wszystkie abstrakcyjne metody z klasy podstawowej, albo również pozostać abstrakcyjna // class DaneInne extends Dane { /* ZLE */ abstract class DaneInne extends Dane { nie wszystkie metody klasy abstrakcyjnej muszą być abstrakcyjne można zdefiniować klasę jako abstrakcyjną nawet jeśli nie zawiera żadnych abstrakcyjnych metod uniemożliwimy w ten sposób tworzenie obiektów danej klasy

5 Programowanie obiektowe. Wykład Polimorfizm a tworzenie i usuwanie obiektów konstruktory są w zasadzie metodami typu static mogą być użyte podczas gdy obiekt jeszcze nie istnieje same nie będą więc wykazywać polimorfizmu kolejność inicjalizacji i uruchamiania konstruktorów jest następująca 1. uruchomienie konstruktora klasy bazowej (często rekursywnie!) 2. inicjalizacja pól w kolejności ich deklaracji 3. wykonanie ciała konstruktora klasy pochodnej najczęściej kwestię usuwania obiektów pozostawia się mechanizmowi garbage collector-a, ale jeśli klasa wykorzystująca mechanizmy dziedziczenia wymaga posprzątania po sobie, to oprócz napisania odpowiedniej metody należy zadbać, aby na koniec wywoływała ona również swojego odpowiednika z klasy bazowej to samo dotyczy uruchomienia metod sprzątających dla klas definiujących składniki naszego obiektu; kolejność powinna być odwrotna do kolejności inicjalizacji (np. kolejności deklaracji połączonych z inicjalizacją w definicji klasy) class Dane { void clr(){system.out.println("clr:dane"); class Litery extends Dane { Opis p = new Opis(); void clr(){ System.out.println("clr:Lit"); p.clr(); super.clr(); class Opis { void clr(){system.out.println("clr:opis"); System.out.println("Tworzymy obiekt..."); Dane d1 = new Litery(); System.out.println("Sprzatamy..."); d1.clr();

6 Programowanie obiektowe. Wykład 03 6 Tworzymy obiekt... Sprzatamy... clr:lit clr:opis clr:dane Wniosek: jeśli już potrzebujemy czegoś podobnego do destruktora z C++, to sami musimy zadbać o poprawną kolejność wykonywania poszczególnych operacji! (raczej niezbyt często się to zdarza) wywołanie z wnętrza konstruktora funkcji korzystających z późnego wiązania może doprowadzić do operowania na danych, które nie zostały jeszcze zainicjalizowane(!) np. gdy konstruktor klasy bazowej uruchomi funkcję, która zadziała dla obiektu potomnego zanim konstruktor klasy podstawowej zostanie uruchomiony, następuje tylko zainicjalizowanie przeznaczonej na obiekt pamięci zerami (odpowiedniego typu) abstract class Dane { abstract void pisz(); Dane() { System.out.println("Dane() BEGIN"); pisz(); // OSTROZNIE! System.out.println("Dane() END"); class Liczba extends Dane { int k=1; Liczba(int i) { System.out.println("Liczba(int) BEGIN"); k=i; pisz(); System.out.println("Liczba(int) END"); void pisz(){system.out.println("k="+k); Dane d1 = new Liczba(9); Dane() BEGIN k=0 Dane() END

7 Programowanie obiektowe. Wykład 03 7 Liczba(int) BEGIN k=9 Liczba(int) END kompilator w tym przypadku nie ostrzega o możliwym użyciu niezainicjalizowanych danych Wniosek: z konstruktora można bezpiecznie wywoływać tylko te metody, które są typu final w klasie podstawowej 2 Interfejsy są to całkowicie abstrakcyjne klasy, tzn. nie zawierające definicji żadnych metod, a jedynie same deklaracje mogą zawierać pola, ale będą one zawsze static i final definiują tylko formę, jaką ma przybrać każda klasa implementujaca interfejs określamy w ten sposób protokół, który ma zastosowanie do komunikacji z takimi klasami interfejsy definiuje się podobnie jak klasy, zastępując słowo class przez interface reguły dostępu do interfejsów, nazwy plików itp. pozostają takie same jak dla klas metody zadeklarowane w interfejsie są zawsze publiczne, nawet jeśli pominiemy słowo kluczowe public w klasach implementujących interfejs definiować musimy je więc również jako publiczne interface Pisze { void pisz(); // public! String s="[pisze]"; // static final! class Rzecz implements Pisze { //void pisz(){ /* ZLE! */ public void pisz() { System.out.println("..Rzecz.."); public static void opis(pisze x){ x.pisz();

8 Programowanie obiektowe. Wykład 03 8 Rzecz r = new Rzecz(); System.out.print("r.pisz() : "); r.pisz(); System.out.print("opis(r) : "); opis(r); System.out.println("r.s="+r.s); System.out.println("Pisze.s="+Pisze.s); r.pisz() :..Rzecz.. opis(r) :..Rzecz.. r.s=[pisze] Pisze.s=[Pisze] 2.1 Implementacja wielu interfejsów interfejsy pozwalają na konstrukcje przypominające wielokrotne dziedziczenie w C++ : można implementować w jednej klasie wiele interfejsów wystarczy po słowie kluczowym implements wymienić je oddzielone przecinkami interface ZwracaInt { int getint(); class Rzecz implements Pisze, ZwracaInt { public void pisz() { System.out.println("..Rzecz.."); public int getint() { return 99; public static void wartosc(zwracaint x){ System.out.println(".."+x.getInt()+".."); opis(r); wartosc(r);..rzecz

9 Programowanie obiektowe. Wykład 03 9 równocześnie z implementacją nawet kilku interfejsów można dziedziczyć w zwykły sposób po innej klasie (abstrakcyjnej lub nie, ale tylko jednej!) dzięki temu możliwe jest wykorzystanie pochodzących z klasy bazowej implementacji metod wymaganych przez interfejs interface Liczy { void licz(); class MojaRzecz extends Rzecz implements Liczy { // implements Pisze // "odziedziczone" public void licz() { System.out.println("teraz licze.."); MojaRzecz m = new MojaRzecz(); m.licz(); teraz licze.. jeśli jakaś klasa ma być w zamierzeniu klasą bazową, to należy rozważyć zrealizowanie jej w postaci interfejsu klasa abstrakcyjna (lub ew. zwykła klasa) będzie korzystniejsza najczęściej tylko wtedy, jeśli musimy od razu w klasie bazowej zawrzeć definicje metod albo pola danych (za wyjątkiem static final) 2.2 Kolizje nazw należy zachować ostrożność, gdy równocześnie wykorzystujemy przeładowanie funkcji, dziedziczenie i interfejsy: nie można pozwolić, aby metody różniły się wyłacznie typem zwracanej wartości zaleca się unikanie identycznych nazw metod w interfejsach, które mogą być używane jednocześnie (w każdym razie należących do tego samego pakietu) interface IA { void f(); interface IB {

10 Programowanie obiektowe. Wykład void f(int n); interface IC { int f(); /* OK - przeladowanie f() */ class CAB implements IA, IB { public void f() { public void f(int n) { /* ZLE - kolizja nazw! */ // class CAC implements IA, IC { // public void f() { // public int f() { return 0; // 2.3 Dziedziczenie mechanizm dziedziczenia może być wykorzystywany również bezpośrednio dla interfejsów tworzymy w ten sposób nowe interfejsy: można rozbudowywać interfejs tworząc wersję pochodną (dziedziczenie po interfejsie) oraz łączyć kilka interfejsów w jeden nowy (tylko w tym przypadku możliwe jest dziedziczenie po kilku elementach podstawowych, też interfejsach) interface Pisze { void pisz(); interface Liczy { void licz(); interface PiszeLepiej extends Pisze { void piszlepiej(); interface PiszeLiczy extends Pisze, Liczy {

11 Programowanie obiektowe. Wykład Grupowanie stałych wygodne w interfejsie, ponieważ pola są zawsze static final (oraz public) można uzyskać efekt podobny do użycia enum w C/C++ interface Stale { double XA = 1.234, XB = 5.678; System.out.println("XA="+Stale.XA); XA=1.234 podobnie jak dla pól final w zwykłych klasach, stałe nie muszą być inicjalizowane wartościami znanymi w momencie kompilacji import java.util.*; interface LiczbaRnd { Random rand = new Random(); int randomint = rand.nextint(10); 3 Klasy wewnętrzne klasy zdefiniowane wewnątrz innych klas pozwala to grupować związane ze sobą klasy decydując o sposobie dostępu do nich nie jest to jednak to samo co zawieranie obiektów odniesienie się do klasy wewnętrznej spoza niestatycznych metod klasy zewnętrznej jest możliwe za pomocą konstrukcji klasazewnętrzna.klasawewnętrzna class Dane2 { class Liczba { int k=1; class Opis { String s="opis:"; void pokaz(){ Liczba l = new Liczba(); Opis o = new Opis(); System.out.println(o.s+l.k);

12 Programowanie obiektowe. Wykład Dane2 d = new Dane2(); d.pokaz(); opis:1... i po dodaniu do klasy Dane2 metody wartosc: Liczba wartosc(int n){ Liczba w = new Liczba(); w.k = n; return w; Dane2.Liczba dl = d.wartosc(7); System.out.println(dl.k); 7 tylko klasy wewnętrzne można deklarować jako private lub protected mogą pozostawać ukryte, a równocześnie dawać się rzutować do implementowanego interfejsu interface DaneTxt { String txt(); class Dane3 { private class Opis implements DaneTxt { String s; Opis(String t){s=t; public String txt() { return s; public DaneTxt op(string s) { return new Opis(s); Dane3 d = new Dane3(); DaneTxt t = d.op("moje dane"); System.out.println(t.txt());

13 Programowanie obiektowe. Wykład moje dane klasy wewnętrzne wykorzystywane są m.in. do obsługiwania zdarzeń w programach korzystających z graficznego interfejsu użytkownika mogą być umieszczane także wewnatrz metod, a nawet zakresów w celu: zaimplementowania interfejsu i zwrócenia referencji utworzenia pomocniczej klasy do rozwiązania skomplikowanego zagadnienia; klasa pomocnicza nie ma być jednak widoczna na zewnątrz 3.1 Anonimowe klasy wewnętrzne przydatne do jednorazowego tworzenia obiektów, bez definiowania osobnej, nazwanej klasy następujące wyrażenia zwrócą taki sam obiekt: return new Baza() { /*... */ ; class Nowa implements Baza { /*... */ return new Nowa(); bezpośrednie użycie w anonimowej klasie wewnętrznej obiektu spoza niej jest możliwe, tylko jeśli obiekt jest final (nie dotyczy to przekazania obiektu do konstruktora klasy nadrzędnej ale odbywa się to jeszcze nie we wnętrzu klasy) interface DaneTxt { String txt(); class Dane4 { public DaneTxt op(final String s) { return new DaneTxt() { private int i = 7; public String txt() { return s+i; ; // uwaga na srednik!

14 Programowanie obiektowe. Wykład Dane4 d = new Dane4(); DaneTxt t = d.op("anonim nr "); System.out.println(t.txt()); anonim nr 7 nie można utworzyć konstruktora dla klasy anonimowej (nie ma ona nazwy!), ale można się posłużyć blokiem inicjalizacyjnym do osiągnięcia podobnego efektu class Dane5 { public DaneTxt op(final String s) { return new DaneTxt() { { System.out.println("(init)"); public String txt() { return s; ; Dane5 d = new Dane5(); DaneTxt t = d.op("anonim"); System.out.println(t.txt()); (init) anonim 3.2 Klasy zagnieżdżone klasy wewnętrzne mają dostęp do składników klasy zewnętrznej bez użycia dodatkowych kwalifikatorów odbywa się to poprzez ukrytą referencję generowaną automatycznie przez kompilator jeśli nie jest nam potrzebne takie połączenie, to można utworzyć klasę wewnętrzną typu static będzie ona tzw. klasa zagnieżdżona konsekwencje definicji jako static: do utworzenia obiektu klasy zagnieżdżonej nie potrzeba obiektu klasy zewnętrznej nie ma dostępu do niestatycznych obiektów klasy zewnętrznej w odróżnieniu od zwykłych klas wewnętrznych mogą zawierać dane statyczne można je zagnieździć wewnątrz interfejsu

15 Programowanie obiektowe. Wykład Tworzenie obiektów do utworzenia obiektu klasy wewnętrznej potrzebne jest użycie już istniejacego obiektu klasy zewnętrznej class Zewn { class Wewn { Zewn z = new Zewn(); Zewn.Wewn w = z.new Wewn(); /*!!! */ ograniczenie to nie dotyczy klas zagnieżdżonych class Zewn { // class Wewn { /* teraz ZLE */ static class Wewn { Wewn() { System.out.println("Wewn()"); Zewn.Wewn w = new Zewn.Wewn(); Wewn() 3.4 Dziedziczenie dziedziczenie po klasie wewnętrznej wymaga zapewnienia, że zachowany jest związek klasy wewnętrznej z klasą zewnętrzną musi zostać przekazana do konstruktora referencja do klasy zewnętrznej i uruchomiona dla niej konstrukcja: referencjazewn.super(); brak takiej instrukcji w konstruktorze klasy potomnej spowoduje błąd kompilacji: an enclosing instance that contains Zewn.Wewn is required class P extends Zewn.Wewn { // P() { /* ZLE! */ P(Zewn z) { z.super(); /*!!! */

16 Programowanie obiektowe. Wykład Zewn z = new Zewn(); P p = new P(z); także to zastrzeżenie nie dotyczy klas zagnieżdżonych class Zewn { static class Wewn { class P extends Zewn.Wewn { P() { /* teraz OK */ P p = new P(); 3.5 Zastosowanie próba realizacji wielokrotnego dziedziczenia po klasach (a nie tylko interfejsach!) każda z klas wewnętrznych może dziedziczyć po innej klasie! class A { /*... */ abstract class B { /*... */ class M extends A { B zwrocb() { return new B() {; static void weza(a a) { /*... */ static void wezb(b b) { /*... */ M m = new M(); weza(m); wezb(m.zwrocb());

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

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

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

Interfejsy i klasy wewnętrzne

Interfejsy i klasy wewnętrzne Interfejsy i klasy wewnętrzne mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Interfejs klasy sposób komunikacji z jej obiektami (zestaw składowych publicznych). Określa on zestaw

Bardziej szczegółowo

Programowanie obiektowe w języku

Programowanie obiektowe w języku Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

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

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas

Bardziej szczegółowo

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

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Java: interfejsy i klasy wewnętrzne

Java: interfejsy i klasy wewnętrzne Java: interfejsy i klasy wewnętrzne Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 INTERFEJSY Interfejs to opis co klasa implementująca dany interfejs powinna robić, ale bez określania

Bardziej szczegółowo

KLASY, INTERFEJSY, ITP

KLASY, INTERFEJSY, ITP 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/

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie Języki i techniki programowania Ćwiczenia 3 Dziedziczenie Klasa abstrakcyjna Autor: Marcin Orchel Klasa abstrakcyjna to taka, że nie możemy tworzyć obiektów tej klasy, możemy jednak dziedziczyć po tej

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 2

PARADYGMATY PROGRAMOWANIA Wykład 2 PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Język Java część 2 (przykładowa aplikacja)

Język Java część 2 (przykładowa aplikacja) Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa

Bardziej szczegółowo

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

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy PODSTAWOWE ELEMENTY JĘZYKA JAVA TYPY DANYCH, OPERATORY I INSTRUKCJE 1. Definicja klasy, dziedziczenie, implementowanie metod interfejsów class nazwa_klasy //ciało klasy Klasa: przed słowem class moŝe wystąpić

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5: Dziedziczenie i polimorfizm 3/24/2013 S.Deniziak: Programowanie obiektowe - Java 1 Kompozycja klas class Drzewo { class Krzew { class Las { Drzewo drzewostan[ ]; Krzew

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

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

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

Bardziej szczegółowo

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

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

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

Zaawansowane programowanie w języku C++ Klasy w C++ Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

Wykład 6: Dziedziczenie

Wykład 6: Dziedziczenie Wykład 6: Dziedziczenie Dziedziczenie Jeden z filarów obiektowości. Budowa jednej klasy na bazie drugiej, przez dodawanie/przesłanianie jej składowych: nad-klasa klasa bazowa pod-klasa klasa pochodna od

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

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

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Język C++ Programowanie obiektowe

Język C++ Programowanie obiektowe Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie

Bardziej szczegółowo

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład V - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Programowanie obiektowe Dziedziczenie (inheritance) - mechanizm

Bardziej szczegółowo

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

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

Pakiety i interfejsy. Tomasz Borzyszkowski

Pakiety i interfejsy. Tomasz Borzyszkowski Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Podstawy Programowania semestr drugi. Wykład czternasty

Podstawy Programowania semestr drugi. Wykład czternasty Wykład czternasty 1. Polimorfizm Ostatni wykład zakończyliśmy stwierdzeniem, że możemy obiektowi dowolnej klasy przypisa ć obiekt klasy dziedziczącej po tej klasie. Przypisanie takie obejmuje jednak jedynie

Bardziej szczegółowo

/** Program demonstrujący działanie klasy GregorianCalendar import java.util.*; public class TestKalendarza // zbuduj d i zainicjalizuj z aktualną datą GregorianCalendar d = new GregorianCalendar(); int

Bardziej szczegółowo

Podstawy programowania III

Podstawy programowania III Podstawy programowania III Jan Kazimirski 1 Opis zajęć Zastosowanie funkcji i obiektów w PHP powtórzenie zagadnień. Dostęp do bazy danych PostgreSQL z poziomu skryptu PHP. Wprowadzenie do języka SQL. Przykłady

Bardziej szczegółowo

Programowanie obiektowe w C++ Wykład 12

Programowanie obiektowe w C++ Wykład 12 Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)

Bardziej szczegółowo

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

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

Bardziej szczegółowo

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

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 12

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 12 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 12 1 KLASY ZAPRZYJAŹNIONE Jedna klasa (A) może zadeklarować przyjaźń z inną klasą (B). Oznacza to, że klasa B ma dostęp do wszystkich składników

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Dziedziczenie. Ogólna postać dziedziczenia klas:

Dziedziczenie. Ogólna postać dziedziczenia klas: Dziedziczenie Ogólna postać dziedziczenia klas: class nazwa_clasy_pochodnej : specyfikator_dostępu nazwa_clasy_bazowej specyfikator_dostępu : public private protected Specyfikator dostępu definiuje, w

Bardziej szczegółowo

Definicje klas i obiektów. Tomasz Borzyszkowski

Definicje klas i obiektów. Tomasz Borzyszkowski Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

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

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

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

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Wprowadzenie do programowanie obiektowego w języku C++

Wprowadzenie do programowanie obiektowego w języku C++ Wprowadzenie do programowanie obiektowego w języku C++ Część czwarta Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

Bardziej szczegółowo

Przypomnienie o klasach i obiektach

Przypomnienie o klasach i obiektach Wykład 14 Programowanie obiektowe ciąg dalszy, str 1 Przypomnienie o klasach i obiektach -5 należydo int 314 należy do double false należy do boolean {27, 314,-15 należy do double[] wartość należy do typ

Bardziej szczegółowo

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu. .NET Klasy, obiekty Klasa i obiekt Każdy obiektowy język programowania daje programiście możliwość tworzenia nowych typów danych. Nowy typ danych definiuje się poprzez zdefiniowanie klasy. Co to jest klasa?

Bardziej szczegółowo

Wykład 9: Metody wirtualne i polimorfizm

Wykład 9: Metody wirtualne i polimorfizm Języki programowania C i C++ Wykład 9: Metody wirtualne i polimorfizm 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD Podstawy programowania w C++ 2 to funkcje składowe, które przydają się szczególnie,

Bardziej szczegółowo

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

C++ - [4-7] Polimorfizm

C++ - [4-7] Polimorfizm Slajd 1 z 14 C++ - [4-7] Polimorfizm Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 20 maja 2013 r. Slajd 2 z 14 Polimorfizm i klasa polimorficzna POLIMORFIZM (cytat z Wikipedii) (wielopostaciowość)

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

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

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Wykład 02. Programowanie obiektowe. Maciej Wołoszyn 10 marca Spis treści.

Wykład 02. Programowanie obiektowe. Maciej Wołoszyn 10 marca Spis treści. Programowanie obiektowe Wykład 02 Maciej Wołoszyn mailto:woloszyn@fatcat.ftj.agh.edu.pl 10 marca 2009 Spis treści 1 Klasa String 2 2 Przeładowywanie metod 5 2.1 Konstruktory..................................

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

.NET Klasy, obiekty. ciąg dalszy

.NET Klasy, obiekty. ciąg dalszy .NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,

Bardziej szczegółowo

Podstawy programowania obiektowego w języku Java dla programujących w C++

Podstawy programowania obiektowego w języku Java dla programujących w C++ Podstawy programowania obiektowego w języku Java dla programujących w C++ Wykład 8 Użyte przykłady częściowo zaczerpnięte z książki: T. Lis: "Java - Ćwiczenia praktyczne", Helion 2004 - wszystkie można

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

Typy sparametryzowane

Typy sparametryzowane Typy sparametryzowane Streszczenie Celem wykładu jest zaprezentowanie typów sparametryzowanych. Czas wykładu 90 minut. Istnieją algorytmy, których zasada działania nie zależy od typu danych wejściowych.

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

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

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 O mnie prowadzący wykład: Dariusz Wardowski pokój: A334 dyżur: środa, godz. 10.00 12.00 e-mail: wardd@math.uni.lodz.pl

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

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

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

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

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

Bardziej szczegółowo

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C #import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:

Bardziej szczegółowo

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

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 30.10.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 30.10.2006 85 / 112 Zgodność typów Rozważmy klasy class A { //... }; class

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 2

Języki i techniki programowania Ćwiczenia 2 Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne

Bardziej szczegółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

Bardziej szczegółowo

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

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Template method (metoda szablonowa)

Template method (metoda szablonowa) 1/11 Template method (metoda szablonowa) Cel: Definiuje szkielet algorytmu przy pomocy operacji podstawowych. Konkretyzacja poszczególnych kroków składowych pozostawiona klasom potomnym mogą być one zmieniane

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 2 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo