Podstawy programowania obiektowego



Podobne dokumenty
Podstawy programowania obiektowego

Wykład 4: Klasy i Metody

Programowanie obiektowe

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

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

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

Programowanie obiektowe

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

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

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

Wykład 8: klasy cz. 4

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

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

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

Programowanie urządzeń mobilnych

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

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

Wstęp do programowania obiektowego. Wykład 2

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

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

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

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

Programowanie obiektowe w języku

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

Podstawy i języki programowania

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

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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

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

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Języki i techniki programowania Ćwiczenia 2

Programowanie i projektowanie obiektowe

Wykład 2: Podstawy Języka

Definicje klas i obiektów. Tomasz Borzyszkowski

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

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

Wykład 5: Klasy cz. 3

Programowanie obiektowe

Dokumentacja do API Javy.

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

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

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

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

1 Atrybuty i metody klasowe

Programowanie obiektowe

Szablony klas, zastosowanie szablonów w programach

Programowanie obiektowe

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie obiektowe

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

Lista dwukierunkowa - przykład implementacji destruktorów

Podstawy Języka Java

Konstruktor kopiujacy

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

Dziedziczenie. dr Jarosław Skaruz

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

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

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

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Aplikacje w środowisku Java

Czym jest stos i sterta?

Wywoływanie metod zdalnych

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

Programowanie obiektowe

Materiały do zajęć VII

Stos liczb całkowitych

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

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

Technologie i usługi internetowe cz. 2

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

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

Definiowanie własnych klas

ALGORYTMY I STRUKTURY DANYCH

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

Java EE produkcja oprogramowania

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

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

Multimedia JAVA. Historia

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

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

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

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:

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

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

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

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

Transkrypt:

Podstawy programowania obiektowego Technologie internetowe Wykład 5

Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie i usuwanie obiektów: konstruktory, garbage collector Referencje

Programowanie obiektowe szybsze projektowanie i tworzenie oprogramowania niekoniecznie szybsze programy programowanie wyższego poziomu (bliższe myśleniu człowieka a nie potrzebom komputera) wielokrotne wykorzystywanie kodu (reusability) obecnie praktycznie standard w językach programowania (Java, C++, C#, PHP, Rubby, Python,...)

Programowanie obiektowe organizacja kodu wg wykonawcy czynności (kod zgrupowany w klasach) metody, konstruktory pola obiekty klasy Programowanie strukturalne organizacja kodu wg tego, co się robi (kod zgrupowany w funkcjach) funkcje zmienne zmienne nowe złożone typy zmiennych (rekordy, struktury)

Obiekt jako serwer usług połóż liczbę: push(int):void usuń liczbę : pop():void STOS (LIFO/LIFO) odczytaj ostatnią liczbę: top():int czy jesteś pusty: empty():boolean

Program obiektowy jako zbiór komunikujący się obiektów zrób coś dla mnie zrób coś dla mnie zrób coś dla mnie zrób coś dla mnie zrób coś dla mnie zrób coś dla mnie zrób coś dla mnie

Wykorzystanie stosu import java.util.scanner;... Stos stos = new Stos(); Scanner sk= new Scanner(System.in); stos.push(sk.nextint()); stos.push(sk.nextint()); stos.push(sk.nextint()); while (! stos.empty()) { System.out.println(stos.top()); stos.pop();

Implementacja stosu class Stos { int[] tab = new int [100]; int wierzch=-1; boolean empty() { return (wierzch==-1); void push(int liczba) { tab[++wierzch]=liczba; void pop() { -- wierzch; int top() { return tab[wierzch]; metody usługi, które może wykonać stos pola potrzebne do realizacji usług

Implementacja stosu 2 class Element { Element nastepny; int liczba; s ostatni class Stos { nowy Element ostatni=null; boolean empty() { return (ostatni==null); 3 void push(int liczba) { Element nowy=new Element(); nowy.liczba=liczba; nowy.nastepny=ostatni; ostatni=nowy; null 47 4 void pop() { ostatni = ostatni.nastepny; int top() { return ostatni.liczba;

Konstruktory inicjalizują obiekt jak metoda, ale nie metoda: nazwa jak nazwa klasy brak wyniku może być więcej niż 1 (przciążanie konstruktorów) zawsze jest co najmniej 1 jeśli nie ma, kompilator dodaje konstruktor domyślny: class Stos { => class Stos { Stos() {

Konstruktory class Stos { int[] tab; int wierzch; Stos(int rozmiar) { tab=new int[rozmiar]; wierzch=-1; Stos() { tab=new int[100]; <==> wierzch=-1; Stos() { this(100);... Stos s10=new Stos(10), s100=new Stos();

Pseudo zmienna 'this' class Punkt { int x, y; Punkt(int x, int y) { x=x;?? y=y;??

class Punkt { int x, y; Pseudo zmienna 'this' Punkt(int x, int y) { x=x; y=y; this.x=x; this.y=y; int getx() { return x; lepiej!!! void setx(int x) { => this.x=x; void setx(int xx){ x=xx;

Pseudo zmienna 'this' Punkt class Punkt { int x, y; p x: 0 1 y: 0 obiekt void setx(int x) { => this.x=x; setx x: 1 this rekord aktywacji metody... Punkt p = new Punkt(0,0); p.setx(1); Punkt q=new Punkt(100,100); q.setx(3); setx x: 3 this q Punkt x: 100 3 y: 100 rekord aktywacji metody obiekt

Usuwanie obiektów częste źródło błędów w programowaniu: zapominanie o usuwaniu zmiennych/obiektów (ogólnie o zwalnianiu pamięci) w Javie nie można usunąć obiektu!!! robi to za nas proces Garbage Collector kiedy usuwa obiekty? kiedy nie są już potrzebne!!!

Obiekty niepotrzebne obiekt jest niepotrzebny, kiedy nie można z niego skorzystać: p Punkt p=new Punkt (0,0); p=new Punkt(1,1); x: 0 y: 0 x: 1 y: 1 pierwszy obiekt jest w pamięci, setx ale nie można się do niego odwołać jest śmieciem (garbage) zajmuje pamięć zajmie się nim GC

Garbage Collector wkracza do akcji automatycznie kiedy brakuje pamięci ale nowoczesne komputery mają dużo pamięci czasami nie ma potrzeby usuwania obiektów wszystkie się zmieszczą usuwanie pojedynczych obiektów zwalnia program można go poprosić o oczyszczenie pamięci kiedy chcemy: System.gc(); w Javie nie ma destruktorów

Funkcja 'finalize' public class Punkt {... public void finalize() { System.out.println( Ktoś usuwa mnie z pamięci ); public static void main(string[[ args) { Punkt p=new Punkt(); System.gc(); System.out.println( Stworzyłem punkt i uruchomiłem GC ); p=null; //obiekt punktu staje się śmieciem System.out.println( Uruchamiam jeszcze raz GC ); System.gc(); System.out.println( Kończę program ); > Stworzyłem punkt i uruchomiłem GC > Uruchamiam jeszcze raz GC > Ktoś usuwa mnie z pamięci > Kończę program

Referencje referencje jak wskaźniki w C/C++ tu nie powstaje żaden obiekt!!! Punkt p, q, r; p=q; referencje są zmiennymi automatycznymi tak jak zmienne typów prostych: int, float, char,... (znikają automatycznie, kiedy wychodzimy z zakresu np. funkcji): void f() { Punkt p=new Punkt(); //tu znika 'p', ale obiekt // pozostaje w pamięci (jako śmieć) obiekty są zmiennymi dynamicznymi (jeśli chodzi o tworzenie) ale nie trzeba ich dynamicznie usuwać (bo jest GC) np. w C++ obiekt-śmieć nie znika sam, trzeba go usunąć za pomocą 'delete' zanim stanie się śmieciem (bo w C++ nie ma GC): delete p; p x y