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



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

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

Programowanie obiektowe - 1.

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

Podstawy Programowania Obiektowego

Wykład 9: Polimorfizm i klasy wirtualne

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

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Enkapsulacja, dziedziczenie, polimorfizm

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Dziedziczenie. Tomasz Borzyszkowski

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Polimorfizm. dr Jarosław Skaruz

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

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

Wykład 8: klasy cz. 4

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Dziedziczenie jednobazowe, poliformizm

Programowanie obiektowe

Wykład 6: Dziedziczenie

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

Modelowanie i Programowanie Obiektowe

Programowanie obiektowe. Wprowadzenie

Technologie i usługi internetowe cz. 2

Kurs WWW. Paweł Rajba.

Projektowanie obiektowe. Roman Simiński Polimorfizm

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

Programowanie w Internecie. Java

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

Programowanie obiektowe

Podstawy programowania obiektowego

Podstawy Języka Java

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Dokumentacja do API Javy.

Programowanie obiektowe

Java Język programowania

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

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

Diagramy klas. dr Jarosław Skaruz

Język C++ Programowanie obiektowe

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

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

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

Zaawansowane programowanie w C++ (PCP)

Definicje klas i obiektów. Tomasz Borzyszkowski

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

Pakiety i interfejsy. Tomasz Borzyszkowski

Programowanie obiektowe

Dziedziczenie. dr Jarosław Skaruz

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

Związek między pojęciami Zasada podstawialności Podklasy muszą realizować kontrakt zawarty przez nadklasy

TEMAT : KLASY DZIEDZICZENIE

Spis treści. 1 Java T M

Programowanie obiektowe

1 Atrybuty i metody klasowe

Zaawansowane programowanie w C++ (PCP)

Definiowanie własnych klas

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Technologie obiektowe

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

Wykład 7: Pakiety i Interfejsy

Podstawa: Bruce Eckel, Thinking in Java, Second Ed., Prentice Hall, 1998 The JavaLanguage Environment, A white Paper, Sun, Oct.

Programowanie obiektowe

10. Programowanie obiektowe w PHP5

Język programowania. Andrzej Bobyk

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Wykład 9: Metody wirtualne i polimorfizm

Programowanie obiektowe w języku

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

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

Wykład 1: Wprowadzenie

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

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

Technologie cyfrowe semestr letni 2018/2019

Programowanie obiektowe

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

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

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

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Technologie cyfrowe semestr letni 2018/2019

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

Języki i techniki programowania Ćwiczenia 2

PARADYGMATY PROGRAMOWANIA Wykład 2

Programowanie obiektowe

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

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

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

Wykład 4: Klasy i Metody

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

Interfejsy i klasy wewnętrzne

Modelowanie obiektowe

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Programowanie obiektowe

Transkrypt:

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 Delphi, C C++, Ada, PHP,...; Języki w pełni obiektowe: Java, C# Podstawowe cechy języka obiektowego Abstrakcyjne typy danych. Dziedziczenie. Dynamiczne wiazanie wywołań metod z ich właściwymi definicjami.

Podstawowe definicje programowania obiektowego Klasy, obiekty i podklasy Abstrakcyjne typy danych w językach obiektowych zwykle nazywane sa klasami. Instancje klas sa nazywane obiektami. Klasa zdefiniowana przez dziedziczenie z innej klasy nazywana jest klasa pochodna lub podklasa. Klasa z której stworzono klasę pochodna nazywamy klasa bazowa lub nadklasa. Podproprogramy które definiuja operacje na obiektach klasy nazywamy metodami. Przechowywane w klasie dane nazywamy polami.

Podstawowe definicje programowania obiektowego Sterowanie dostępem Sterowanie dostępem pozwala ukryć pewne części klasy przed ich nieuprawnionym użyciem przez inne klasy deklaracje public i private. Deklaracja protected umożliwia publiczny dostęp do elementów klasy przez klasy z tego samego pakietu, a jednocześnie zabrania innym. Klasa pochodna dziedziczy wszystkie pola i metody swojej klasy bazowej ale może modyfikować odziedziczone metody. Dziedziczenie pojedyncze i wielokrotne Jeżeli klasa jest podklasa tylko jednej klasy bazowej to mówimy o dziedziczeniu pojedynczym. Jeżeli klasa ma więcej niż jedna nadklasę to proces nazywamy dziedziczeniem wielokrotnym.

Podstawowe definicje programowania obiektowego Metody i klasy abstrakcyjne Jeśli w klasie chcemy zdefiniować metodę której implementacja ma sens dopiero w klasie pochodnej to metodę taka nazywamy abstrakcyjna. Klasę zawierajac a przynajmniej jedna metodę abstrakcyjna nazywamy klasa abstrakcyjna. Nie można tworzyć instancji klasy abstrakcyjnej. Metody i pola obiektu i klasy Klasy moga mieć metody i pola instancyjne oraz metody i pola klasowe (statyczne). Pola i metody instancyjne sa zawsze przypisane do swojej instancji obiektu (pola określaja stan obiektu). Pola i metody klasowe należa do całej klasy i dla klasy jest tylko jedna ich kopia (ich użycie nie wymaga istnienia jakiejkolwiek instancji klasy).

Podstawowe definicje programowania obiektowego Polimorfizm i dynamiczne wiazania Zmienne (referencje, wskaźniki) klasy bazowej moga odwoływać się także do obiektów dowolnej podklasy tej klasy bazowej (relacja przechodnia). Nadklasa może definiować metody które sa przedefiniowane przez jej podklasy. Kiedy wywoływana jest metoda przez zmienna klasy bazowej (lecz wskazujac a na klasę pochodna) to wywoływana jest dynamicznie metoda z właściwej podklasy. Rodzaj polimorfizmu: dynamiczne wiazanie wywołań z definicjami metod.

Problemy implementacyjne Czy wszystko jest obiektem? W czystym modelu programowania obiektowego wszystkie typy sa klasami, nie ma różnicy między klasami predefiniowanymi w języku a własnymi, wszystkie działania realizowane sa przez wywoływanie metod rozwiazanie eleganckie lecz praktycznie niestosowane. Dodanie do języka imperatywnego obiektów (C++) rozwiazanie sprawiajace czasami kłopoty. Prawie pełna obiektowość przy pozostawieniu prostych typów danych (Java). Inne problemy Sprawdzanie zgodności typów i polimorfizm (dziedziczenie). Dziedziczenie pojedyncze czy wielokrotne. Alokacja i dealokacja obiektów.

Przeglad języków obiektowych Smalltalk Dziedziczenie tylko pojedyncze, podklasy maja pełny dostęp do klasy bazowej, istnieje systemowa klasa Object będaca przodkiem wszystkich klas. Stosowane jest dynamiczne wiazanie wywołań z metodami i dynamiczne wyszukiwanie metody po kolei przez wszystkie nadklasy. Zalety: prosta regularna składnia, prawie pełna obiektowość. Wady: niska efektywność prawie wszystko jest robione dynamicznie, trudne wykrywanie błędów.

Przeglad języków obiektowych C++ Język hybrydowy (mieszanka języka imperatywnego i obiektowego). Dziedziczenie wielokrotne, brak klasy podstawowej, składniki prywatne dostępne tylko dla klas zaprzyjaźnionych (friends), klasa pochodna może zmienić tryb dostępu do dziedziczonych składników. Obiekty zadeklarowane za pomoca zmiennych niewskaźnikowych maja statyczne wiazania metod, zmienne wskaźnikowe dynamiczne, klasy abstrakcyjne nie maja instancji ale ich wskaźniki moga służyć do polimorficznych wywołań metod z podklas nieabstrakcyjnych. Zalety: wysoka efektywność kodu (niewiele wiazań jest tak naprawdę dynamiczna). Wady: złożoność języka spowodowana jego dwoistościa.

Przeglad języków obiektowych Java Język prawie całkowicie obiektowy (wyjatek to typy podstawowe). Dziedziczenie pojedyńcze ale z wyjatkiem można dziedziczyć dowolna ilość klas całkowicie abstrakcyjnych (interfejsy), można deklarować metody i klasy abstrakcyjne, istnieje klasa podstawowa Object. Wywołania sa wiazane z metodami dynamicznie z wyjatkiem metod statycznych i zadeklarowanych jako final. Zalety: język bardzo jednorodny z prostym sterowaniem dostępem. Wady: zachowanie typów podstawowych stwarza czasami problemy.

Przeglad języków obiektowych C# Język bardzo podobny do Javy

Główny język wykładu - dlaczego Java? Historia Javy (1995-...). Nowoczesny język obiektowy (ale z pewnymi ograniczeniami ułatwiajacymi użycie). Maszyna Wirtualna Javy przenoszalność oprogramowania. Język ma tylko jeden dialekt (nie tak jak np. C czy C++). Powszechny darmowy dostęp. Duża ilość dostępnych bibliotek ułatwienie i skrócenie procesu programowania. Wpisana w język wielowatkowość. Obowiazkowa obsługa błędów (wyjatków). Zarzadzanie pamięcia Garbage Collector.

Pierwszy program HelloWorld.java 1 public class HelloWorld { 2 public static void main ( String args [] ) { 3 System. out. println ( " Hello, World!" ); 4 } 5 } Kompilacja - powstanie HelloWorld.class unix> javac HelloWorld.java Uruchamianie unix> java HelloWorld Hello, World! unix>

Główny język wykładu - dlaczego C++? Najpowszechniej stosowany język obiektowy. Dużo już stworzonych bibliotek. Łatwość pisania przy znajomości C, brak konieczności pisania obiektowego przy możliwości korzystania z bibliotek obiektowych.