Java SE Laboratorium nr 2. Temat: Obiektowość

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

Download "Java SE Laboratorium nr 2. Temat: Obiektowość"

Transkrypt

1 Java SE Laboratorium nr 2 Temat: Obiektowość 1. Typy proste a. byte 8 bit b. short 16 bit c. int 32 bit d. long 64 bit e. float (32-bitowy standard IEEE 754) f. double (64-bitowy standard IEEE 754) g. boolean h. char 16 bit int zmiennatypuint = 6; 2. Zmienne referencyjne (odnośnikowe, obiektowe) Zmienną typu referencyjnego deklaruje się w sposób podobny do deklaracji zmiennej typu prostego. Utworzona zostanie jednak tylko referencja, do której zostanie przypisana wartość null. Takiej zmiennej po deklaracji należy przypisać odniesienie do utworzonego instrukcją new obiektu. String zmiennareferencyjna; zmiennareferencyjna = new String("napis"); 3. Instrukcje sterujące a. if void applybrakes() { // the "if" clause: bicycle must be moving if (ismoving){ // the "then" clause: decrease current speed currentspeed--; void applybrakes() { if (ismoving) { currentspeed--; else { System.err.println("The bicycle has already stopped!"); class IfElseDemo { 1

2 int testscore = 76; char grade; if (testscore >= 90) { grade = 'A'; else if (testscore >= 80) { grade = 'B'; else if (testscore >= 70) { grade = 'C'; else if (testscore >= 60) { grade = 'D'; else { grade = 'F'; System.out.println("Grade = " + grade); b. switch public class SwitchDemo { int month = 8; String monthstring; switch (month) { case 1: monthstring = "January"; case 2: monthstring = "February"; case 3: monthstring = "March"; case 4: monthstring = "April"; case 5: monthstring = "May"; case 6: monthstring = "June"; case 7: monthstring = "July"; case 8: monthstring = "August"; case 9: monthstring = "September"; case 10: monthstring = "October"; case 11: monthstring = "November"; case 12: monthstring = "December"; default: monthstring = "Invalid month"; System.out.println(monthString); 2

3 Instrukcja break nie jest obowiązkowa. Jednak jeśli jej nie będzie wykonane zostaną wszystkie kolejne instrukcje case, aż do napotkania break, lub do końca bloku switch. c. Operator warunkowy warunek? wartość1 : wartość2 Jeśli warunek jest prawdziwy, podstaw za wartość wyrażenia wartość1, w przeciwnym wypadku wartość2. int liczba1 = 10; int liczba2; liczba2 = liczba1 < 0? -1 : 1; System.out.println(liczba2); d. for class ForDemo { public static void main(string[] args){ for(int i=1; i<11; i++){ System.out.println("Count is: " + i); int[] numbers = {1,2,3,4,5,6,7,8,9,10; for (int item : numbers) { System.out.println("Count is: " + item); e. while do while class WhileDemo { public static void main(string[] args){ int count = 1; while (count < 11) { System.out.println("Count is: " + count); count++; class DoWhileDemo { public static void main(string[] args){ int count = 1; do { System.out.println("Count is: " + count); count++; while (count < 11); 3

4 f. break i continue Instrukcja break przerywa działanie pętli i switcha. Instrukcja continue przerywa wykonywanie bieżącej iteracji i przechodzi do następnej. Isnieją wersje etykietowane tych instrukcji. Etykietę umieszcza się przed instrtukcją pętli. Etykietowane break lub continue może wtedy wychodzić z kilku zagnieżdżonych pętli. class BreakWithLabelDemo { int[][] arrayofints = { { 32, 87, 3, 589, { 12, 1076, 2000, 8, { 622, 127, 77, 955 ; int searchfor = 12; int i; int j = 0; boolean foundit = false; search: //etykieta for (i = 0; i < arrayofints.length; i++) { for (j = 0; j < arrayofints[i].length; j++) { if (arrayofints[i][j] == searchfor) { foundit = true; break search; //etykietowane break if (foundit) { System.out.println("Found " + searchfor + " at " + i + ", " + j); else { System.out.println(searchfor + " not in the array"); 4. Tablice Tablica to prosta struktura danych zawierająca elementy jednego typu. Tablice w Javie są obiektami. Aby utworzyć tablicę należy zadeklarować referencję do danego typu tablicy, a następnie utworzyć obiekt tablicy. class Tablice { int[] tab; tab = new int[2]; tab[0] = 4; // int[] tab = {4,7; //zapis skrócony System.out.println("Pierwszy element tablicy to " + tab[0]); 4

5 Dzięki temu, że tablice są obiektami, każda z nich posiada właściwość length, która przechowuje rozmiar tablicy. class Tablice { short[] tab = new short[10]; for(short i=0;i<tab.length;i++) tab[i] = i; for(short i=0;i<tab.length;i++) System.out.println("tab[" + i + "] = " + tab[i]); Tablice mogą być wielowymiarowe. Ich struktura jest taka, że każda komórka przechowuje referencję do kolejnej tablicy. W ten sposób można tworzyć tablice nieregularne. class Tablice { int[][] tab = new int[4][]; tab[0] = new int[4]; //W pierwszym wierszu tablica czteroelementowa tab[1] = new int[2]; //W drugim wierszu dwie komórki tab[2] = new int[1]; //... tab[3] = new int[3]; int licznik = 1; for(int i=0;i<tab.length;i++) for(int j=0;j<tab[i].length;j++) tab[i][j] = licznik++; for(int i=0;i<tab.length;i++){ System.out.print("tab[" + i + "] = "); for(int j=0;j<tab[i].length;j++) System.out.print(tab[i][j] + " "); System.out.println(""); 5. Klasy i obiekty Klasy są opisami obiektów. W klasach definiujemy pola i metody. Klasy mogą być: - publiczne - pakietowe - wewnętrzne a. Pola klasy - publiczne - chronione - pakietowe domyślne, gdy nie ma żadnego specyfikatora - prywatne Domyślnie wartości pól ustawiane są na zero (0, 0.0, \0, null, false). 5

6 class Punkt{ int x; int y; b. Tworzenie obiektów (Klasa Punkt i klasa Main w tym samym pakiecie) public class Main { Punkt punkt = new Punkt(); punkt.x = 10; punkt.y = 20; System.out.println("punkt.x = " + punkt.x); System.out.println("punkt.y = " + punkt.y); class Punkt { int x; int y; c. Metody - publiczne - chronione - pakietowe domyślne, gdy nie ma żadnego specyfikatora - prywatne void wyswietlwspolrzedne(){ System.out.println("punkt.x = " + x); System.out.println("punkt.y = " + y); public class Main { Punkt punkt = new Punkt(); punkt.x = 10; punkt.y = 20; punkt.wyswietlwspolrzedne(); Metody mogą zwracać wartość (metoda w klasie Punkt): int getx() { return x; 6

7 d. Argumenty metod void setx(int wspx){ x = wspx; void setxy(int wspx, int wspy){ x = wspx; y = wspy; Parametrem metody, a także wartością zwracaną może być obiekt. void setxy(punkt punkt){ x = punkt.x; y = punkt.y; Punkt getpunkt(){ Punkt punkt = new Punkt(); punkt.x = x; punkt.y = y; return punkt; Metody można przeciążać, czyli możemy mieć kilka metod o takiej samej nazwie, ale o różnych parametrach (setxy(int wspx, int wspy) i setxy(punkt punkt)). W przypadku przeciążania metod typ wartości zwracanej nie jest brany pod uwagę. e. Konstruktory Są to specjalne metody wywoływane zawsze po utworzeniu obiektu w pamięci. Służą do inicjacji obiektów. Nigdy nie zwracają żadnego wyniku. Nazwa jest taka sama jak nazwa klasy. Jeśli nie utworzymy żadnego konstruktora, kompilator niejawnie dodaje konstruktor domyślny bezparametrowy. Konstruktory można przeciążać. Punkt() { x = 1; y = 1; Punkt(int wspx, int wspy) { x = wspx; y = wspy; Punkt(Punkt punkt) { x = punkt.x; y = punkt.y; Mając różne konstruktory, możemy w różny sposób tworzyć obiekty: 7

8 public class Main { Punkt punkt1 = new Punkt(); punkt1.wyswietlwspolrzedne(); Punkt punkt2 = new Punkt(3, 7); punkt2.wyswietlwspolrzedne(); Punkt punkt3 = new Punkt(punkt2); punkt3.wyswietlwspolrzedne(); f. Słowo kluczowe this Słowo kluczowe this to odwołanie do bieżącego obiektu. Możemy je traktować jako referencję do aktualnego obiektu. Pozwala np. odróżnić pola klasy od parametrów metody, czy konstruktora, które są zmiennymi lokalnymi. Punkt(int x, int y) { this.x = x; this.y = y; 6. Dziedziczenie a. Klasa pochodna W Javie nie ma wielodziedziczenie. Możemy dziedziczyć tylko po jednej klasie. Klasą, z której pośrednio lub bezpośrednio dziedziczą wszystkie inne jest klasa Object. Klasa potomna przejmuje właściwości i zachowanie klasy bazowej. Dziedziczenie realizuje się za pomocą słowa extends. Tworzymy klasę Punkt3D, która będzie dziedziczyła po klasie Punkt. Ponieważ będzie ona zawierała wszystkie pola i metody klasy bazowej, należy do niej dodać tylko nową funkcjonalność: pole z, oraz obsługujące je metody. class Punkt3D extends Punkt { int z; void setz(int z){ this.z = z; int getz(){ return z; void setxyz(int x, int y, int z){ this.x = x; this.y = y; this.z = z; 8

9 b. Metoda super() Aby klasa była w pełni funkcjonalna należy dodać do niej konstruktory. Punkt3D() { x = 1; y = 1; z = 1; Punkt3D(int x, int y, int z) { this.x = x; this.y = y; this.z = z; Punkt3D(Punkt3D punkt) { x = punkt.x; y = punkt.y; z = punkt.z; Porównując je z konstruktorami klasy bazowej widać, że są one bardzo podobne. Są ich rozszerzonymi wersjami. Można zatem wykorzystać już istniejące konstruktory klasy bazowej, wywołać je i nie dublować tego samego kodu. W istocie, to zawsze gdy wywoływany jest konstruktor klasy pochodnej, to niejawnie na początku wywoływany jest domyślny konstruktor klasy bazowej. Czyli najpierw tworzony jest obiekt klasy bazowej, a dopiero później jest rozbudowywany do obiektu klasy pochodnej. Jeśli więc klasa bazowa nie ma konstruktora domyślnego, wystąpi błąd kompilacji. Dlatego też należy pisać konstruktory domyślne bezparametrowe. Jeśli natomiast jawnie wywołamy jakikolwiek konstruktor (w pierwszej linii konstruktora klasy pochodnej i tylko tu!), to konstruktor domyślny nie będzie wywoływany. Ponieważ konstruktor jest specjalną metodą, której nie da się wywołać w zwykły sposób, wykorzystuje się do tego celu specjalną konstrukcję. Jest tometoda super(), którą należy wywołać w pierwszej linii konstruktora klasy pochodnej. Punkt3D() { super(); z = 1; Punkt3D(int x, int y, int z) { super(x,y); this.z = z; Punkt3D(Punkt3D punkt) { super(punkt); z = punkt.z; Ostatni konstruktor wykorzystuje fakt, że obiekt klasy pochodnej może być także traktowany jak obiekt klasy bazowej. Zawiera on w sobie obiekt klasy bazowej więc nie jest to dziwne. Dlatego też pomimo tego, że w klasie bazowej nie mamy konstruktora 9

10 przyjmującego jako argument obiekt typu Punkt3D, a tylko taki, który przyjmuje obiekt klasy Punkt, to właśnie ten konstruktor jest wykorzystywany przez konstrukcję super(punkt), do której przekazujemy obiekt klasy pochodnej. c. Specyfikatory dostępu W Javie mamy cztery specyfikatory (modyfikatory) dostępu: - publiczny dostęp do składowych klasy bez ograniczeń - chroniony dostęp do składowych z klas pochodnych i klas z tego samego pakietu - pakietowy dostęp do składowych z klas z tego samego pakietu - prywatny dostęp do składowych tylko z wnętrza klasy W poprzednich przykładach wykorzystywany był dostęp domyślny, czyli pakietowy. Należy jednak stosować hermetyzację klas i dostęp do zasobów klasy powierzać tylko publicznemu interfejsowi, czyli publicznym metodom danej klasy. Czyli pola klasy Punkt powinny być chronione (bo są dziedziczone), natomiast metody typu get i set powinny być publiczne. Dlaczego? Np. w przypadku klasy Punkt, jeśli np. z jakiegokolwiek powodu chcielibyśmy zmienić współrzędne punktów z układu kartezjańskiego na biegunowy, to zmienić będziemy musieli dodatkowo tylko metody publicznego dostępu do naszych współrzędnych. Natomiast wszelkie inne klasy (w tym wypadku klasa Main), które korzystają z klasy Punkt nie muszą być zmieniane. Jeśli natomiast inne klasy korzystałyby z bezpośredniego dostępu do współrzędnych punktu, to po ich zmianie, te klasy także musiałyby ulec zmianie. class Punkt { private double sinusalfa; private double r; public int getx(){ double x = r * sinusalfa; return (int) x; Klasy mogą być albo publiczne albo pakietowe. W jednym pliku może się znaleźć tylko jedna klasa o dostępie publicznym, pozostałe muszą mieć dostęp pakietowy. Inne specyfikatory są możliwe w przypadku klas wewnętrznych. d. Przeciążanie i przesłanianie metod Metody mogą być przeciążane (ta sama nazwa, różne parametry) zarówno w klasie bazowej jak i w pochodnej. Dodatkowo w klasie pochodnej mogą być przesłaniane, czyli w klasie pochodnej możemy zdefiniować metodę o takiej samej sygnaturze jak w klasie bazowej, ale wykonującą inne, zmodyfikowane zadanie. W obiektach klasy bazowej będzie obowiązywała metoda oryginalna, w obiektach klasy pochodnej przesłaniająca (zmieniona). 10

11 Jeśli w klasie pochodnej chcemy odwołać się do przesłoniętej metody z klasy bazowej, musimy znowu posłużyć się konstrukcją super.metodabazowa(); Najczęściej tą konstrukcję stosuje się w metodach przesłaniających w klasie pochodnej do wywołania jej pierwotnej wersji. class Punkt3D extends Punkt { private int z; public void wyswietlwspolrzedne() { super.wyswietlwspolrzedne(); System.out.println("punkt.z = " + z); W podobny sposób można przesłaniać pola, co jest niezalecane. e. Składowe statyczne Pola i metody klasy mogą być statyczne. Oznacza to, że istnieją one nawet bez powoływania obiektu do życia i są wspólne dla wszystkich obiektów tej klasy. Odwoływać się do nich można przez nazwę obiektu lub nazwę klasy. public static void main(string[] args) f. Klasy i składowe finalne Klasa finalna to klasa, z której nie wolno wyprowadzać innych klas, czyli nie można po niej dziedziczyć. Pola finalne to pola, dla których nie możemy zmienić raz przypisanej wartości. Za pomocą tych pól możemy tworzyć stałe: static final double PI = ; Pola finalne typów referencyjnych nie pozwalają zmienić raz przypisanego obiektu do danego pola, natomiast możemy modyfikować pola obiektu, na który ta referencja wskazuje. final Punkt punkt = new Punkt(); punkt.setx(5); //punkt = new Punkt(3,5); //błąd Finalna metoda oznacza, że jej przesłonięcie w klasie potomnej nie jest możliwe. Finalne mogą być również argumenty metod i oznacza to, że nie mogą być zmienione w ciele metody. 7. Polimorfizm a. Konwersja typów i rzutowanie obiektów 11

12 Konwersje i rzutowania mogą być albo w dół albo w górę. W górę oznaczają konwersje na typy bardziej ogólne, bazowe i są automatyczne. W dół oznaczają konwersje na typy bardziej wyspecjalizowane, pochodne i muszą być jawnie wywołane przez programistę. Konwersje dotyczą typów prostych. Konwersje w dół na typ mniej pojemny mogą prowadzić do utraty informacji. int x; double y = 3.7; x = (int)y; // x = 3 Typy obiektowe również podlegają konwersjom. Jednak w tym wypadku mamy do czynienia z rzutowaniem typów, które nie powoduje utraty informacji. Obiekt klasy potomnej możemy rzutować na obiekt klasy bazowej, a obiekt klasy bazowej na obiekt klasy pochodnej. Pierwszy przypadek jest oczywisty, obiekt potomny zawiera w sobie obiekt bazowy. Punkt3D punkt3d1 = new Punkt3D(); Punkt punkt = (Punkt)punkt3D1; Punkt3D punkt3d2 = (Punkt3D)punkt; W przypadku tego rzutowania nie utracimy żadnej informacji. Zmienia się tylko perspektywa z jakiej patrzymy na nasz obiekt. W pierwszej linii patrzymy na nowo utworzony obiekt punkt3d1 poprzez referencję typu Punkt3D, więc widzimy i mamy dostęp do wszystkich jego składowych. W drugiej linii rzutujemy go na klasę bazową i patrzymy na niego poprzez referencję klasy bazowej, czyli mamy dostęp do składowych takich jakie występują w klasie bazowej. W trzeciej linii dokonujemy z kolei konwersji obiektu klasy bazowej na klasę pochodną. I znowu mamy dostęp do wszystkich elementów (niezmienionych) klasy pochodnej. W rzeczywistości był tu cały czas jeden obiekt, na który spoglądaliśmy poprzez różne referencje. b. Klasa Object i metoda tostring Wszystkie klasy pośrednio lub bezpośrednio dziedziczą po klasie Object. Jedną z podstawowych metod tej klasy, którą bardzo często się wykorzystuje nawet nie zdając sobie z tego sprawy jest metoda tostring. Jest ona wywoływana zawsze gdy oczekiwanym argumentem jest String a my przekazujemy referencję do jakiegokolwiek obiektu. W większości przypadków należy więc ją przesłonić i zaimplementować w klasie potomnej. Metoda tostring w klasie Punkt: public String tostring() { return "Punkt o współrzędnych (" + x + "," + y +")"; Wywołanie: public class Main { Punkt punkt = new Punkt(3, 8); System.out.println(punkt); // zmienna klasy Punkt 12

13 Wyświetli w konsoli napis: Punkt o współrzędnych (3,8) c. Wywołania polimorficzne W Javie wszystkie metody są wirtualne, a wszystkie ich wywołania polimorficzne (poza wywołaniami konstruktorów). Polimorfizm oznacza późne wiązanie, wiązanie czasu wykonania. W przypadku rzutowania w dół uniemożliwia wykonanie niedozwolonych operacji, natomiast w przypadku rzutowania w górę wywoływane są metody klas pochodnych (o ile istnieją) nawet jeśli referencje do obiektów są klasy bazowej. Skojarzenie wywołania metody z obiektem następuje w trakcie wykonywania programu, a nie w czasie kompilacji. class Zwierz { public String tostring() { return "To jest zwierzę"; class Kot extends Zwierz { public String tostring() { return "To jest kot"; class Pies extends Zwierz { public String tostring() { return "To jest pies"; public class Main { Zwierz z1 = new Kot(); Zwierz z2 = new Pies(); System.out.println(z1); // To jest kot System.out.println(z2); // To jest pies Jeśli w klasie pochodnej nie będzie przesłoniętej metody klasy bazowej, wywołana zostanie metoda bazowa. 13

14 8. Interfejsy a. Klasy abstrakcyjne Klasa bazowa często służy tylko do zdefiniowania zestawu metod, którymi będą posługiwały się klasy potomne, oraz udostępnienia wywołań polimorficznych. Nie ma więc potrzeby, a nawet niewskazane jest aby były tworzone w takich przypadkach obiekty klas bazowych. Taką możliwość dają klasy abstrakcyjne. Klasa abstrakcyjna to klasa, w której przynajmniej jedna metoda jest abstrakcyjna. Oznacza się ją słowem kluczowym abstract. Zarówno metodę jak i klasę. Metoda abstrakcyjna zawiera tylko definicję zakończoną średnikiem. Zadeklarowanie metody jako abstrakcyjnej wymusza jej redeklarację w klasie pochodnej. abstract class Zwierz { protected abstract void dajglos(); public String tostring() { return "To jest zwierzę"; class Kot extends Zwierz { protected void dajglos() { System.out.println("miauuuuu"); public String tostring() { return "To jest kot"; class Pies extends Zwierz { protected void dajglos() { System.out.println("hau hau"); public String tostring() { return "To jest pies"; b. Tworzenie interfejsów 14

15 Interfejs to klasa czysto abstrakcyjna, zawierająca sygnatury metod, które domyślnie są abstrakcyjne. Deklarowany jest ze słowem kluczowym interface. Może być publiczny lub pakietowy. Oprócz metod interfejsy mogą zawierać pola, które zawsze są publiczne, statyczne i finalne, co powoduje, że nie musimy tych specyfikatorów dodawać. public interface Latający { int SKRZYDLA = 2; public void lec(); c. Konflikty nazw Klasa może dziedziczyć tylko po jednej klasie bazowej, lecz może implementować wiele interfejsów. Może jednak dochodzić wtedy do konfliktów nazw, które należy po prostu Eliminować. Jeśli klasa implementuje kilka interfejsów i w dwóch z nich mamy identyczną metodę, to implementujemy tylko jedną metodę. Konflikt zachodzi wtedy, gdy mamy taką samą nazwę metody, takie same parametry, lecz inny typ wyniku zwracanego. class Sokol extends Zwierz implements Latajacy, Atakujacy{ protected void dajglos() { System.out.println("hau hau"); public void lec() { // TODO Auto-generated method stub public void atakuj() { // TODO Auto-generated method stub public String tostring() { return "To jest pies"; Interfejsy można budować stosując mechanizm dziedziczenia. W tym przypadku możliwe jest wielodziedziczenie. Interfejs potomny będzie zawierał wszystkie metody interfejsów bazowych oraz swoje. Ze względu na wielodziedziczenie mogą tu także występować konflikty nazw. W interfejsach mogą także występować metody domyślne (default), oraz statyczne, które to mogą zawierać napisane ciała. Jeśli klasa implementuje dany interfejs, to obiekt tej klasy można rzutować na typ tego interfejsu. Oznacza to, że typ obiektu może być utożsamiany z typem interfejsu, który jest w nim zaimplementowany. 15

16 9. Klasy wewnętrzne a. Rodzaje klas wewnętrznych b. Obiekty klas wewnętrznych c. Klasy anonimowe d. Klasy zagnieżdżone - statyczne Ćwiczenia samodzielne: 1. Stwórz abstrakcyjną klasę Publication zawierającą pola: author, title, year. 2. Stwórz potomka klasy Publication o nazwie Book. Dodaj pole składowe pages (ilość stron). 3. Stwórz potomka klasy Publication o nazwie Article. Dodaj pole składowe journalname. 4. Zadbaj o enkapsulację. 5. Przygotuj metodę public String tostring() dla stworzonych klas, za pomocą której wypisać będzie można informacje o publikacjach. 6. Stwórz stałą BOOKLET_PAGE_LIMIT, która będzie określała ile maksymalnie stron może mieć wydawnictwo typu Booklet. 7. Stwórz klasę Booklet, dziedziczącą po Book z dodatkowym polem składowym published zmienna typu logicznego informująca czy dana ulotka jest opublikowana czy nie. 8. Przygotuj konstruktory dla wymienionych klas. Zadbaj o to, by każdy Booklet, nie mógł mieć więcej niż BOOKLET_PAGE_LIMIT stron. 9. Przygotuj w f. main program, gdzie powołane zostanie do życia kilka obiektów klas wymienionych powyżej. Zainicjuj ich pola składowe wartościami losowymi. Patrz klasa Random: Przygotuj interfejs summarizebook, który będzie zawierał jedną metodę. 11. Klasa Book ma implementować interfejs summarizebook, a metoda z tego interfejsu ma generować losowo 20-znakowe streszczenie szyfr książki. 16

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

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

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

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

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

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

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

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

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

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

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

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 W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

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

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

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

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Podstawowe części projektu w Javie

Podstawowe części projektu w Javie Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych

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

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

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

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

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

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

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

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

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

Wykład 5: Więcej o Klasach i Metodach Wykład 5: Więcej o Klasach i Metodach Przeciążanie Metod Klasa posiada dwie lub więcej metod o tej samej nazwie ale różnych deklaracjach parametrów. Java używa liczby i typów argumentów by ustalić którą

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

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

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

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

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

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java: Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java: p u b l i c c l a s s Punkt { i n t x, y ; Punkt ( ) { x = 1 ; y = 1 ; Punkt ( i n t wspx, i n t wspy ) { x = wspx ; y = wspy ; Punkt (

Bardziej szczegółowo

KOTLIN. Język programowania dla Androida

KOTLIN. Język programowania dla Androida KOTLIN Język programowania dla Androida Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga

Bardziej szczegółowo

Dziedziczenie. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,

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

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

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

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 13 Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods

Bardziej szczegółowo

Podstawy Języka Java

Podstawy Języka Java 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

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

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

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

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

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

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

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

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

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

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

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

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

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

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Programy w Javie składają się z pakietów Pakiety zawierają definicje

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

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

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

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1 PODSTAWOWE ELEMENTY JĘZYKA JAVA WYRAŻENIA, OPERATORY, INSTRUKCJE 1. Operatory arytmetyczne +, -, /,*, % Przykład 1 programu z interfejsem konsolowym public class Lab2_1 // Tworzy generator liczb losowych,

Bardziej szczegółowo

Przykład -

Przykład - Polimorfizm Przykład - http://rpodhajny.wordpress.com klasa bazowa A, oraz klasy pochodne B1, B2,, Bn (dziedziczące po klasie bazowej). niektóre klasy pochodne chcą mieć możliwość skorzystania z metody

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

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

Języki i metody programowania Java Lab2 podejście obiektowe Języki i metody programowania Java Lab2 podejście obiektowe https://docs.oracle.com/javase/tutorial/ http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/pojava/javazk4_2.pdf Zofia Kruczkiewicz 1 Zadanie

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

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

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

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double

Bardziej szczegółowo

Wykład 9: Polimorfizm i klasy wirtualne

Wykład 9: Polimorfizm i klasy wirtualne Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm

Bardziej szczegółowo

Materiały do zajęć VII

Materiały do zajęć VII Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja

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

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

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

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;

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

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

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

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:

Bardziej szczegółowo

Programowanie w Javie wykład 8 Interfejsy

Programowanie w Javie wykład 8 Interfejsy 1 Programowanie w Javie wykład 8 Interfejsy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA Uniwersalne techniki programowania,

Bardziej szczegółowo

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h Programowanie II Lista 3 Modyfikatory dostępu plik TKLientBanku.h plik z funkcją main Przyjaźń Dziedziczenie Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to

Bardziej szczegółowo

Tworzenie aplikacji w języku Java

Tworzenie aplikacji w języku Java Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

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

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

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne

Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne 1 Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie

Bardziej szczegółowo

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

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Klasy cd. Struktury Interfejsy Wyjątki

Klasy cd. Struktury Interfejsy Wyjątki Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury

Bardziej szczegółowo

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

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza Akademia ETI Wprowadzenie do programowania w Javie PG Java User Group 1 Dlaczego Java? Najpopularniejszy język programowania obiektowego Łatwy w nauce Dostępny na wiele platform 2 Platformy Java Java Standard

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Programowanie urządzeń mobilnych

Programowanie urządzeń mobilnych Programowanie urządzeń mobilnych Najważniejsze platformy mobilne Android ios Windows Mobile / Windows Phone 7 Symbian Bada BlackBerry OS Brew Android Producent systemu: Open Handset Alliance Producenci

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

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

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

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania

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 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

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

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

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