Programowanie obiektowe. Wprowadzenie



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

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

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

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Programowanie obiektowe - 1.

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

Programowanie obiektowe zastosowanie języka Java SE

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

Java jako język programowania

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

WPROWADZENIE DO JĘZYKA JAVA

Podstawy Programowania Obiektowego

Podstawy języka Java. przygotował:

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Historia modeli programowania

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

Programowanie obiektowe

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

Podstawy programowania. Wprowadzenie

Programowanie w Internecie. Java

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

Multimedia JAVA. Historia

Technologie i usługi internetowe cz. 2

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

Java EE produkcja oprogramowania

Programowanie Obiektowe i C++

Modelowanie i Programowanie Obiektowe

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

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

Środowiska i platformy programistyczne

Programowanie Obiektowe i C++ Marcin Benke

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Scala - programowanie obiektowo-funkcyjne

Technologie cyfrowe semestr letni 2018/2019

Programowanie obiektowe

Język programowania. Andrzej Bobyk

Tworzenie aplikacji w języku Java

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Języki i paradygmaty programowania - 1

Wykład 1: Wprowadzenie

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Projektowanie obiektowe. Roman Simiński Polimorfizm

Historia i podstawowe koncepcje. Tomasz Borzyszkowski

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

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

Język C++ Programowanie obiektowe

Programowanie obiektowe

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

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Java Język programowania

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

Język JAVA podstawy programowania

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Programowanie współbieżne i rozproszone

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Dziedziczenie jednobazowe, poliformizm

Programowanie wieloplatformowe w Java

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Aplikacje Internetowe, Servlety, JSP i JDBC

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

Technologie cyfrowe semestr letni 2018/2019

Autor : Mateusz Kupczyk

Wykład 0 Informacje Podstawowe

GUI - projektowanie interfejsów cz. II

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

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

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

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

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Programowanie obiektowe

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Programowanie obiektowe

Style programowania - krótki przeglad

Dobry start do profesjonalnego programowania w C++ dla. początkujących programistów

Wykład 1: Wprowadzenie do technologii Java

Programowanie MorphX Ax

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

Autor: Bączkowski Karol Promotor: dr inż. Paweł FIGAT

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

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

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

Wstęp do programowania w języku Java

Zaawansowane programowanie w C++ (PCP)

Wprowadzenie do programowanie obiektowego w języku C++

TEMAT : KLASY DZIEDZICZENIE

Wykład Ćwiczenia Laboratorium Projekt Seminarium

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

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

WPROWADZENIE DO JĘZYKA JAVA

Podstawy i języki programowania

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Technologie obiektowe

Programowanie obiektowe

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Transkrypt:

1 Programowanie obiektowe Wprowadzenie

2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego Podejście tradycyjne (proceduralne): program jako kolekcja funkcji (a wcześniej lista instrukcji) Podejście obiektowe: program jako kolekcja współpracujących ze sobą obiektów Obiekty łączą dane i operacje na nich Zalety programowania obiektowego: Ułatwia współpracę i podział zadań między programistów Ułatwia pielęgnację i rozbudowę aplikacji Ułatwia ponowne wykorzystywanie wcześniej napisanego kodu Często umożliwia naturalne modelowanie rzeczywistości Odpowiednie dla dużych projektów, popularne w inżynierii oprogramowania

3 Rozwój paradygmatów programowania I Kod maszynowy II Assembler (RISC, CISC) Imperatywne Deklaratywne III Proceduralne (C, Pascal) Obiektowe (C++, Java, C#) Funkcyjne (Haskell) Logiczne (Prolog)

Programowanie strukturalne a programowanie obiektowe 4 Podejście strukturalne (C++) struct Punkt { int x, y; }; void narysuj (struct Punkt P) { // ciało funkcji } Podejście obiektowe (C++) class Punkt { int x, y; public: void narysuj () { // ciało funkcji } };

5 Podstawowe pojęcia (1/5) Klasa definiuje charakterystykę czegoś ; wyznacza modularną strukturę programu zorientowanego obiektowo Charakterystyka obejmuje atrybuty (pola, właściwości) i zachowanie (metody) Pola i metody klasy są określane jako składowe klasy Przykład: klasa Punkt opisująca cechy i zachowanie wspólne dla wszystkich punktów np. współrzędne Obiekt instancja (wystąpienie) klasy Np. konkretny Punkt punkt o współrzędnych (3,4) Zbiór wartości atrybutów obiektu w danej chwili jest określany mianem stanu obiektu

6 Podstawowe pojęcia (2/5) Metoda operacja, która może być wykonana na obiekcie, reprezentująca jego funkcjonalność Np. metoda narysuj() klasy Punkt, która może być wywołana na rzecz konkretnego obiektu klasy Punkt Przekazywanie komunikatów proces polegający na przekazaniu danych z obiektu do obiektu lub zleceniu wywołania metody na rzecz obiektu

7 Podstawowe pojęcia (3/5) Hermetyzacja ukrycie szczegółów implementacji klasy przed kodem korzystającym z klasy Składowe klasy dostępne z zewnątrz stanowią interfejs klasy Składowe niedostępne z zewnątrz mogą być zmieniane bez wpływu na pozostały kod aplikacji Realizowane poprzez kwalifikatory dostępu do składowych klasy Podstawowe kwalifikatory dostępu do składowych: public dostęp publiczny protected dostępne w klasie definiowanej i klasach pochodnych private dostępne tylko w definiowanej klasie

8 Podstawowe pojęcia (4/5) Dziedziczenie definiowanie podklasy (klasy pochodnej) jako specjalizacji klasy istniejącej (klasy bazowej, nadklasy) Np. klasa Piksel jako specjalizacja klasy Punkt Podklasa dziedziczy z klasy bazowej atrybuty i metody Podklasa może posiadać dodatkowe atrybuty i metody oraz redefiniować metody odziedziczone Dziedziczenie wielobazowe polega na definiowaniu klasy jako dziedziczącej bezpośrednio z więcej niż jednej klasy Dostępne nie we wszystkich językach Prowadzi do skomplikowanych programów

9 Podstawowe pojęcia (5/5) Abstrakcja praca z obiektami na poziomie ogólności (względem hierarchii dziedziczenia) odpowiednim dla rozwiązywanego problemu Np. traktowanie w danym kontekście instancji klasy Piksel jako instancji klasy Punkt, jeśli nie są w nim wykorzystywane atrybuty i metody niewystępujące w klasie Punkt Umożliwia np. traktowanie kolekcji wystąpień konkretnych podklas klasy Punkt ogólnie jako punktów Polimorfizm różne zachowanie w odpowiedzi na takie samo wywołanie metody w zależności od konkretnej klasy obiektu W połączeniu z dziedziczeniem i abstrakcją Późne wiązanie decyzja o tym, z której klasy metodę wywołać podejmowana w trakcie działania programu, a nie na etapie kompilacji

Diagramy klas 10

11 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko do uruchamiania programów Platforma software owa Maszyna wirtualna Java Java Application Programming Interface (Java API)

Edycje Javy (wersje środowisk programistycznych) 12 Java Platform, Standard Edition (Java SE, dawniej J2SE) Trzon technologii Java Wyznacza wersje języka Java Wczesne wersje: 1.0, 1.1 Java 2 (2nd generation): 1.2, 1.3, 1.4, 5.0 (1.5) Java SE: 6 (1.6), 7, 8 Kompilator, maszyna wirtualna, narzędzia pomocnicze Java Development Kit (JDK) Java Runtime Environment (JRE) Java Platform, Enterprise Edition (Java EE, dawniej J2EE) Platforma do tworzenia aplikacji dla serwerów aplikacji Java SE + serwer aplikacji, narzędzia do prototypowania aplikacji Java Platform, Micro Edition (Java ME, dawniej J2ME) Dla zastosowań w urządzeniach mobilnych (telefony, PDA)

13 Język programowania Java Zorientowany obiektowo język programowania prosta składnia rozbudowane biblioteki Zaprojektowana przez firmę Sun Język o składni podobnej do C++ Podobieństwo składni, inna filozofia Zaprojektowana "od zera", początkowo pod nazwą Oak Początkowo pomyślana do zastosowań w urządzeniach elektronicznych codziennego użytku Przyjęła się jako język do zastosowań sieciowych (szczególnie World Wide Web, aplikacje intra- i internetowe)

14 Charakterystyka języka Java (1) Java jest prosta składnia podobna do C++ nie ma w Javie: przeciążania operatorów (poza jednym wyjątkiem) plików nagłówkowych i preprocesora operacji arytmetycznych na wskaźnikach struktur i unii dziedziczenia wielobazowego wzorców niejawnej konwersji typów Java jest zorientowana obiektowo klasy i interfejsy

15 Charakterystyka języka Java (2) Java jest kompilowana, ale niezależna od architektury kompilacja do kodu pośredniego - bajtkodu (ang. byte code) kod pośredni jest interpretowany przez Java Virtual Machine (JVM) definicja języka i maszyna wirtualna są w pełni wyspecyfikowane nie ma elementów niezdefiniowanych lub zależnych od implementacji (np. typy proste są takie same na wszystkich maszynach) pełna przenaszalność kodu źródłowego i wynikowego Java jest wielowątkowa wątki Javy w miarę możliwości przekładane są na wątki systemu operacyjnego możliwość synchronizacji

16 Charakterystyka języka Java (3) Java nadzoruje pamięć nie ma wskaźników takich jak w C++ dostęp do obiektów przez referencje referencje zachowują się jak "bezpieczne wskaźniki" każdy dostęp do pamięci jest kontrolowany odśmiecanie pamięci (ang. garbage collection) Java jest odporna na błędy i bezpieczna ściśle określona forma kodu pośredniego kontrola dostępów do pamięci obsługa błędów w oparciu o wyjątki ograniczenie dostępu do zasobów (Security Manager)

17 Charakterystyka języka Java (4) Java jest niewielka pomyślana dla małych systemów Java jest stosunkowo szybka szybka w porównaniu z innymi językami interpretowanymi wolniejsza od C (może to nie mieć znaczenia w programach wykorzystujących komunikację sieciową lub często oczekujących na reakcję użytkownika) JVM może wykorzystywać kompilatory typu Just-In-Time, aby poprawić efektywność przetwarzania Java jest rozszerzalna istnieje możliwość wykorzystywania bibliotek napisanych w innych językach Java jest dynamiczna np. możliwość pobierania klas z Internetu w trakcie pracy programu

18 Uruchamianie programów w języku Java Kod źródłowy *.java Kod wynikowy *.class Kompilator języka Java Maszyna wirtualna Javy (JVM)

19 Maszyna wirtualna Javy (JVM) Zachowuje się jak "wirtualny komputer" interpretujący bajtkod Javy Stanowi bezpieczne środowisko do uruchamiania programów Musi być zaimplementowana dla konkretnej platformy JVM może wykorzystywać kompilację Just-In-Time (JIT) kompilacja "w locie" bajtkodu do instrukcji maszynowych szczególnie efektywna w przypadku powtarzalnych fragmentów kodu (np. pętle) JVM może stanowić samodzielną aplikację lub być wbudowana w inny program np. przeglądarkę

20 Typy programów Java Samodzielne aplikacje graficzne pracujące w trybie tekstowym Aplety małe aplikacje zagnieżdżane w dokumentach HTML w dużym stopniu przyczyniły się do popularności Javy Serwlety aplikacje pracujące po stronie serwera mogą stanowić alternatywę dla CGI w serwerach WWW JavaBeans komponenty języka Java, zbudowane wg ustalonego wzorca, tworzone z myślą o ich wielokrotnym wykorzystaniu Enterprise JavaBeans komponenty języka Java wykorzystujące architekturę rozproszoną