Prog Obiekt


Wstęp do Programowania Obiektowego
Dr Karol Grudziński
Wykład 1
Paradygmaty programowania,
metody, narzędzia i języki programowania

1
[1] Języki programowania, perspektywa...
*Wczesne generacje (perspektywa historyczna)
~Wyrażanie wszystkich algorytmów w języku
maszynowym (trudność, czasochłonność, podatność
na błędy)
- kody operacji procesora numeryczne,
- argumenty operacji numeryczne,
~Wprowadzenie notacji symbolicznej
(mnemonicznej)
- przydzielenie kodom operacji nazw
- opisowe nazwy komórek (adresów) pamięci 2
[1] Języki programowania, perspektywa...
~Wprowadzenie asemblera: (automatyczne
tłumaczenie z zapisu mnemonicznego na
maszynowy)
~Przykład, kod programu na sumowanie (maszynowy
i asemblerowy pewnego procesora):
Maszynowy Asembler Legenda
156C LD R5, CENA LD: ładuj
166D LD R6, PODATEK ADDI: dodaj całk.
5056 ADDI R0, R5, R6 ST: przechowaj
206E ST R0, SUMA HLT  stop 3
C000 HLT
[1] Języki programowania, perspektywa...
~Wady języka maszynowego i asemblera (języki I i II
generacji):
- silna zależność od sprzętu (rejestry, rozkazy,
pamięć)
- pierwotne (prymitywne) elementy z których
budowane są programy: przykład domu (deski,
gwozdzie, cegły | okna, drzwi itd. - gotowe elementy)
~ Pojawienie się języków III generacji
- zastosowanie konstrukcji niezależnych od
komputera implementowalnych przez instr. maszynowe
- przykłady: Fortran (Formula translator), Cobol
(Common Business-Oriented Language). 4
[1] Języki programowania, perspektywa...
- Wprowadzenie translatora (kompilatora) - Grace
Hooper. Kompilator tłumaczy programy wysoko-
poziomowe na kod maszynowy. Translator przypomina
asembler ale musi łączyć ze sobą wiele instrukcji
maszynowych. Program jest w całości tłumaczony a
dopiero potem uruchamiany.
- Interpreter: tłumaczy instrukcja po instrukcji
~Niezależność języków III generacji od komputera
złudna
- rozmiar rejestrów i wielkości słowa ma wpływ na
wyniki uzyskiwane
- brak norm języków: swoboda implementacji 5
[2] Paradygmaty programowania
~Paradygmaty programowania
Historię rozwoju języków lepiej odzwierciedlają
paradygmaty programowania (podejścia)
*Podstawowe paradygmaty:
- Proceduralny (Imperatywny): tradycyjne
podejście, ciąg poleceń operujący danymi i generujący
wyniki. Rozwiązanie problemu polega na znalezieniu
algorytmu. Z tym procesem zgodny jest cykl
maszynowy pobierz-dekoduj-wykonaj. 6
[2] Paradygmaty programowania
- Paradygmat deklaratywny:
Skupiamy się na pytaniu  Na czym polega problem a
nie na tym  Jak rozwiązać problem . Sztuka polega na
odkryciu ogólnego algorytmu rozwiązywania
problemów. Zadaniem programisty jest znalezienie
precyzyjnego opisu problemu a nie znalezienie
algorytmu.
- wczesne języki deklaratywne są specjalnego
przeznaczenia, opracowane dla wąskiej klasy
zastosowań. Np. testowanie hipotez procesów.
- pózniejsze języki są bardziej ogólne i stosują
logikę formalną. 7
[2] Paradygmaty programowania
- Paradygmat funkcyjny:
konstruowanie  czarnych skrzynek , każda pobiera
dane i produkuje wyniki. Takie skrzynki nazywamy
funkcjami. Funkcje tworzy się z elementarnych
elementów, funkcje wyższego poziomu tworzy się z
funkcji niższych poziomów. Problem dzieli się na
elementy i każdy element reprezentuje jako funkcję.
Mówimy że programy mają w tym podejściu strukturę
blokową. 8
[2] Paradygmaty programowania
- Paradygmat obiektowy:
Dane traktuje się jako aktywne obiekty a nie pasywne
jednostki. Przykład sortowania listy:
- Podejście funkcyjne: elementy listy i zestaw
operacji (funkcji) operującymi elementami. Elementy i
funkcje są niezależne.
- Podejście obiektowe: konkretna lista jest
obiektem, posiada dane (elementy) i zestaw operacji
(tzw. interfejs) przeznaczony do operowania tymi
danymi. Dane i operacje są związane i stanowią
jedność. 9
[3] Języki prowadzące do OOP
~Historia C i C++ (C język nieobiektowy, C++:
zawiera zaawansowane metody OOP ale pozwala na
programowanie nieobiektowe).
-C++ pochodzi od C, ten z kolei od BCPL i B.
-BCPL powstał w 1967 (Martin Richards)  język do
pisania oprogramowania systemów operacyjnych i
kompilatorów.
-B  Ken Thompson 1970, rozwinął B i użył go do
stworzenia wczesnych wersji systemu Unix w Bell
Laboratories.
-BCPL i B języki proste, element danych zajmuje
słowo komputera, programista decyduje czy to jest
liczba rzeczywista czy całkowita. 10
[3] Języki prowadzące do OOP
- Język C powstał z B, Dennis Richie, Bell Labs,
1972.
-Język znacznie rozszerzony w stosunku do
BCPL i B.
- Początkowo C stosowany do implementacji
systemu UNIX.
-C stosowany do dziś ale prawie całkowicie
wyparty przez C++.
-C stosowany głównie do programowania
systemowego, ale jest ogólnego przeznaczenia, język
zarówno niskiego jak i wysokiego poziomu. 11
[3] Języki prowadzące do OOP
-Pózne lata 70, powstaje C klasyczne (C
Kernighana i Richiego, książka  The C Programming
Language wzbudza ogólne zainteresowanie.
-C staje się popularne, powstają kompilatory na
różne maszyny, brak standardu -> niekompatybilne
języki -> problemy z przenośnością oprogramowania
-1983 Powstaje komitet X3J11 przy ANSI
(American Standards Committee on Computers and
Information Processing). ANSI współpracuje z ISO
(International Standards Organization) 12
[3] Języki prowadzące do OOP
-1990 Opublikowany standard ANSI/ISO
- II wydanie książki Kernighana i Ritchiego
omawia tę wersję języka.
- Wczesne lata 80-te, Bjarne Stroustroup, Bell
Labs, stwarza podstawy współczesnego języka C++,
będącego prawie dokładnym nadzbiorem języka C.  C
z klasami (wczesna nazwa pózniejszego C++),
zapożycza najlepsze elementy z innych języków i
popularyzuje paradygmat programowania obiektowego
(OOP  Object Oriented Programming). 13
[3] Języki prowadzące do OOP
~C na tle innych języków.
- C język programowania strukturalnego
(funkcyjnego) podobnie jak Pascal (Niklaus Wirth
1971)
-Pascal zbudowany do nauczania programowania
strukturalnego, brak ważnych cech praktycznych w tym
języku -> język niepopularny w realnych
zastosowaniach.
-ADA  język do celów wojskowych rozwinięty dla
potrzeb departamentu obrony w latach 70 i 80.
Nowatorstwo polega na wprowadzeniu
wielozadaniowości). Inne języki: Java, Cobol, Fortan...
14
[3] Języki prowadzące do OOP
~Historia C++
-Bjane Stroustrup, twórca C++.
-Cel Stroustrupa: dostarczyć/połączyć własności do
organizacji programów języka Simula wraz z
wydajnością i wygododą C w zakresie programowania
systemowego. Cel miał być osiągnięty w ciągu pół roku
od rozpoczęcia projektu. To się powiodło.
-Prehistoria C++: kilka lat przed pomysłem dodania
własności Simuli do C  Stroustrup robi doktorat w
Cambridge, Anglia. Doktorat dotyczy programowania
modularnego dużych systemów: symulator dużego
systemu rozproszonego. 15
[3] Języki prowadzące do OOP
- Kod symulatora napisany w Simuli, Stroustrup
bardzo zafascynowany możliwościami tego języka.
Niestety konkretna implementacja języka Simula z
którą pracował Stroustrup nie skalowała się z
wielkością kodu projektu.
Wady: 1) długie czasy kompilacji i linkowania
modułów w stosunku do czasu kompilacji programu
jako monolit (całość).
2) Wolne działanie programu.
- Stroustrup zmuszony do przepisania symulatora w
BCPL aby uniknąć przerwania projektu i tym samym
odejścia z Cambridge bez doktoratu.
-Pisanie w BCPL to dla Stroustrupa horror ale
projekt się powiódł. 16
[3] Języki prowadzące do OOP
- Stroustrup dostaje pracę w laboratoriach Bella w
USA i doskonali umiejętności w programowaniu w C
pod okiem Kernighana.
- Zalążki C++: Stroustrup pracuje nad projektem jak
jądro systemu UNIX współdzielić przez sieć
komputerów. Projekt wymaga modularnego
programowania z którym Stroustrup zetknął się w
Cambridge. Postanowił stworzyć nowe narzędzie/język
aby cel osiągnąć. Tak powstaje język `C z klasami' 
przodek C++. 17
[3] Języki prowadzące do OOP
~Historia języka Java
-Początkowo Internet przeznaczony tylko do poczty
elektronicznej, przesyłania plików (FTP) i pracy
zdalnej (telnet).
- W latach dziewiędziesiątych pojawia się WWW,
początkowo tylko w formie tekstowej.
- Pierwsza przeglądarka graficzna (Mosaic)
rewolucjonizuje dostęp do internetu.
- Pojawiają się pierwsze usługi komercyjne jednak
strony WWW są statyczne.
- Pojawia się Java: aplety umożliwiają umieszczanie
na stronach WWW interaktywnych aplikacji.
- Obecnie Java oferuje cały zestaw technologii
WWW. 18
[3] Języki prowadzące do OOP
- Historia Javy:
-1990: Firma SUN rozpoczyna projekt Green
mający na celu dostarczenie oprogramowania dla
użytowników sprzętu elektronicznego  James Gosling.
- C++ zbyt podatny na błędy  Gosling tworzy
nowy język Oak. Oak musiał być zorientowany na
zdarzenia i przenośny.
- W tym czasie rozwija się WWW. SUN
dostrzega możliwość zastosowania OAK w internecie.
-1995: 1 poważna aplikacja w Javie: Webrunner
(przeglądarka WWW). OAK przemianowany na Java a
Webrunner -> HotJava. 19
[3] Języki prowadzące do OOP
~Jak nauczać Programowania Obiektowego:
1) C++: wyjść od C i wprowadzić C++ i
ewentualnie Jave (C to prawie całkowicie zgodny
podzbiór C++, Java zapożycza wiele z C i C++)
2) C++: od razu wprowadzić C++ i nie uczyć C
(wada: jest dużo kodu w C w projektach i nadal
dobrze jest mieć świadomość różnic między trzonem
C++ a C)
3) Java (uczyć najpierw Javy a C++ pózniej) 20
[4] Środowiska Programistyczne do C++/Java
1) Visual Studio (Wielojęzykowe)  Microsoft (Java?)
2) Borland C++Builder - Borland
3) Borland JBuilder (Java) - Borland
4) Rodzina Borland Enterprise Studio - Borland
4) Eclipse (wielojęzykowe)  głównie Java  open
(IBM)
5) IBM Web Sphere  IBM (oparte na Eclipse)
6) NetBeans (wielojęzykowe)  głównie Java  open
(SUN)
7) Java Studio One SUN  oparte na NetBeans
... i wiele innych
-Środowisko powinno umożliwiać całościowy cykl
życia aplikacji. 21


Wyszukiwarka

Podobne podstrony:
C Cpp01 wstep prog obiekt
Ad egz Proj&Prog
Projektowanie robót budowlanych w obiektach zabytkowych
Obiektyw
NiBS 3 Rozklad trojkatny Modele Starzenie obiektow nieodnawianych
WYMAGANIA BHP DOTYCZACE OBIEKTOW BUDOWLANYCH I TERENU ZAKLADU czesc II drogi
l obiektow unesco WSG
Bliższy opis obiektów Vril1
PODZIAŁ BUDYNKÓW (OBIEKTÓW KUBATUROWYCH) NA STANY, ELEMENTY SCALONE I ASORTYMENTY
Mysle wiec jestemP lamiglowek wspomagajacych obiektywne myslenie my5obi
Nietypowe sposoby ograniczania przepięć w instalacji elektrycznej w niewielkich obiektach (2)
Wniosek o wydanie pozwolenia na użytkowanie obiektu budowlanego
Stan i możliwości rozwoju małych i średnich obiektów hotelarskich w Euroregionie Nysa wyniki badań
JP SS 6 Klasy i obiekty
Obiekt Seksualny

więcej podobnych podstron