PROJEKTOWANIE APLIKACJI INTERNETOWYCH

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

Download "PROJEKTOWANIE APLIKACJI INTERNETOWYCH"

Transkrypt

1 PROJEKTOWANIE APLIKACJI INTERNETOWYCH (WFAIS.IF-N016) dr inż. Marcin Zieliński Wykład dla kierunku: Informatyka Stosowana I rok, II stopień Rok akademicki: 2016/ semestr letni WYKŁAD 6

2 Przypomnienie JavaScript 6 (ECMA 6) - c.d. - wyrażenia interpolowane, - operator rozproszenia/reszty, - iteratory, - nowy typ danych: Symbol, - pętla for-of, - moduły, - klasy.

3 JavaScript (JS) - ECMA6 Wyrażanie interpolowane (literały szablonów łańcuchowych): Wraz z wprowadzeniem ES6, w standardzie języka pojawiły się znane z niektórych języków szablonów np. Jade (Pug), wyrażenia interpolowane. Są to wyrażenia będące stringami w których możemy umieszczać zmienne, których wartość jest ustalana w momencie interpretacji kodu. Przykład (jak było w ES5): var imie = "Jan"; var witaj = "Czesc " + imie + "!"; console.log(witaj); // Czesc Jan! Przykład ES6: var imie = "Jan"; var witaj = `Czesc ${imie!`; console.log(witaj); // Czesc Jan! Szablon wyrażenia interpolowanego umieszczamy w języku JavaScript 6 pomiędzy tzw. apostrofami odwrotnymi: ` ` Zaletą wyrażeń interpolowanych jest to że można zapisywać je w wielu linijkach i będą traktowane jako jedno wyrażenie. Zakres działania wyrażeń interpolowanych zależy tylko o kontekstu wywołania tak jak jest to w przypadku zmiennych.

4 JavaScript (JS) - ECMA6 Wyrażanie interpolowane (literały szablonów łańcuchowych): var tekst = `To jest naprawde długie tekst pisany w wielu linijkach ale odczytywany w formie jednego wyrażenia.`; console.log(tekst); // To jest naprawde długie tekst pisany w wielu linijkach ale odczytywany w formie jednego wyrażenia. Wewnątrz wyrażeń interpolowanych można umieszczać: zmienne, wywołania funkcji, oraz inne wyrażenia interpolowane. function upper(text){ return text.touppercase(); var imie = "Jan"; var info = `To jest pierwsze ${upper("wywolanie") tej funkcji przez ${upper(`${imiea`)`; // To jest pierwsze WYWOLANIE tej funkcji przez JANA. console.log(info);

5 JavaScript (JS) - ECMA6 Operator rozproszenia/reszty... (trzech kropek) : Działanie tego operatora zależy od kontekstu: gdy jest używany w stosunku do tablic (a w ogólności każdego obiektu iterowanego), powoduje on rozproszenie wartości tego obiektu na poszczególne składniki. Przykład zastosowania operatora rozproszenia: function foo(a,b,c){ console.log(a,b,c); foo(...[1,2,3]); // 123 var tab1 = [11,12,13]; var tab2 = [10,...tab1,14]; Tu działanie operatora rozproszenia pełni tą samą rolę co metoda concat() dla tablic. console.log(tab2); // [10,11,12,13,14]

6 JavaScript (JS) - ECMA6 Operator rozproszenia/reszty... (trzech kropek) : Drugim zastosowaniem operatora... jest w zasadzie odwrotne: zbiera wszystkie wartości i umieszcza je w tablicy: Przykład zastosowania operatora reszty: function foo(a,b,...c){ console.log(a,b,c); W tym przypadku operator zbiera wszystkie argumenty przekazane do funkcji poza dwoma pierwszymi i zapisuje je do wspólnej tablicy. foo(10,11,12,13,14); // [12,13,14] function foo(...a){ console.log(a); Kiedy nie ma innych argumentów to wszystkie podane parametry zostaną zapisane do tablicy. foo(10,11,12,13,14); // [10,11,12,13,14]

7 JavaScript (JS) - ECMA6 Pętla wyliczeniowa for of : Jedną z nowości w ES6 jest pętla pozwalająca na wyliczenie wartości z tablic. Do tej pory dostępna była tylko pętla for in : // Deklaracja prostej tablicy var tab = ["a","b","c","d","e","f"]; Pętla for-in for (let i in tab){ console.log( i ); // Pętla for-of for (let i of tab){ console.log( i ); // a b c d e f Zwykłe obiekty nie nadają się do wykorzystania w pętlach for-of ponieważ nie posiadają Obiekt na którym operuje pętla for-of musi być iterowalny, lub musi być możliwość skonwertowania takiego obiektu do postaci iterowalnej tzn. obiektu domyślnych który jest iteratorów. w stanie wygenerować iterator, który może zostać użyty przez pętlę. W JavaScript są to np. typy wbudowane: tablice, łańcuchy znaków, generatory, kolekcje.

8 JavaScript (JS) - ECMA6 Nowy typ danych Symbol: Wraz z ES6 do standardu JS wprowadzono nowy prosty typ danych tzw: symbol: var s = Symbol("To jest nowy typ danych"); typeof s; // symbol Cechy typu Symbol: - nie posiada swojej formy literałowej (inne typy proste posiadają). - w deklaracjach Symbol nie można używać operatora new, ponieważ Symbol nie jest konstruktorem, zatem obiekt nie zostanie utworzony. - parametr przekazany w deklaracji Symbol powinien być łańcuchem znakowym (z opisem przeznaczenia symbolu), jest jednak opcjonalny. - dzięki wykorzystaniu metody typeof możemy sprawdzić czy mamy do czynienia z symbolem. - służą do tworzenia łańcuchów znakowych które nie będą kolidowały z innymi wartościami w programie.

9 JavaScript (JS) - ECMA6 Iteratory: Są to wzorce służące do pobierania danych ze źródła w sposób sekwencyjny na żądanie (jest to wzorzec programowania znany z innych języków). W ES6 został wprowadzony niejawny standaryzowany interfejs iteratorów, który może zostać wykorzystany w wbudowanych strukturach danych JS. var tablica = [1,2,3]; var idx = tablica[symbol.iterator](); Wykonanie Symbol.iterator na rzecz tablicy spowoduje zwrócenie iteratora. console.log(idx.next()); console.log(idx.next()); console.log(idx.next()); console.log(idx.next()); // { value: 1, done: false // { value: 2, done: false // { value: 3, done: false // { value: undefined, done: true Dlaczego iterator dla wartości 3 nie przypisał własności done na true?? Natomiast metoda next() jest składową interfejsu Iteratora która zwraca kolejną wartość z iterowanego obiektu. Przyjęta konwencja dla wbudowanych iteratorów, zakłada że wywołanie metody next() dla zakończonego iteratora nie powoduje zgłoszenia błędu tylko zwrot wartości: {value: undefined, done: true

10 JavaScript (JS) - ECMA6 Organizacja kodu: Moduły W ES6 tworzenie modułów oparte jest na plikach oraz wykorzystuje się do tego celu dwa słowa kluczowe export i import. Słowo kluczowe export jest wykorzystywane do określenia listy eksportowanych powiązań. Można w zasadzie uznać, że jest operatorem udostępniania modułu. Przykłady: export var a = 5; export function test(){ var tab = [1,2,3]; export { tab ; Eksporty poszczególnych elementów. var a = 5; var b = 7; function test(){ var tab = [1,2,3]; export { a, test, tab ; Eksport wszystkich powiązań jednocześnie. Wszystko co nie zostanie wyeksportowane jest prywatne, a nie jak by się wydawało zmienną globalną.

11 JavaScript (JS) - ECMA6 Organizacja kodu: Moduły Aby w programie głównym pobrać moduł i móc posługiwać się udostępnionymi przez niego metodami składowymi, musimy dołączyć taki moduł korzystając z operatora import. Podobnie jak w przypadku eksportowania istnieją różnice w użyciu poszczególnych form składniowych. export var a = 5; function komunikat(){ console.log( Witaj ); export { komunikat, a ; import { komunikat, a from plik ; Eksport Import Łańcuch znakowy plik na końcu definicji importu jest tzw. specyfikatorem modułu, określającą lokalizację danego modułu. Może to być adres URL bądź ścieżka dostępu do pliku w lokalnym systemie. Nazwy identyfikatorów podane w imporcie muszą odpowiadać dokładnie nazwą podanym w eksporcie. Uwaga: Specyfikator modułu musi być łańcuchem znakowym i nie może być przekazany jako zwykła zmienna zawierająca łańcuch znakowy! var nazwa = plik ; import { komunikat, a from nazwa; // ERROR / BŁĄD!!!

12 JavaScript (JS) - ECMA6 Organizacja kodu: Klasy Organizacja kodu w JavaScript do wersji ES6 oparta była o literały obiektowe lub funkcje, które spełniały rolę indywidualnego opakowania na daną funkcjonalność. Można było uznać nawet że dzięki istnieniu operatora new oraz instanceof, te formy przypominały specyficznie funkcjonujące klasy. Wraz z specyfikacją ECMA6, usystematyzowano zagadnienie opakowywania funkcjonalności dzięki wprowadzeniu zakresu określanego słowem kluczowym class. Nowy mechanizm tworzenia klas pozwala określenie bloku kodu, którego zawartość definiuje składowe prototypu funkcji. Przykład: class Komunikat { constructor(a,b){ this.x = a; this.y = b; Wypisz() { console.log( this.x + this.y ); ; Zapis class powoduje utworzenie funkcji, podobnie jak było to robione poprzednio przy określaniu zakresu bloku funkcjonalności. Konstruktor określa sygnaturę stworzonej funkcji. Metody składowe są tworzone tak jak w przypadku tworzenia funkcji w literałach obiektowych. Wewnątrz klasy metod nie oddzielamy przecinkami!!!

13 JavaScript (JS) - ECMA6 Organizacja kodu: Klasy Porównanie nowego zapisu klasowego z poprzednim standardem literałowym: class Komunikat { constructor(a,b){ this.x = a; this.y = b; Wypisz() { console.log( this.x + this.y ); ; function Komunikat(a,b){ this.x = a; this.y = b; Komunikat.prototype.Wypisz = function(){ console.log( this.x + this.y ); var K = new Komunikat(5,6); K.x; K.y; K.Wypisz(); // 5 // 6 // 56 Przedstawione zapisy funkcjonalnie są tym samym, jednak występują pomiędzy nimi różnice: - w przypadku klasy tworzenie nowej instancji musi odbyć się za pomocą operatora new, w przypadku funkcji nie musi tak być. - użycie zapisu klasowego w zapisie globalnym tworzy w nim leksykalny identyfikator Komunikat, jednak w odróżnieniu od zapisu funkcyjnego nie wtworzy w globalnym obiekcie własności o tej nazwie.

14 Node.js + Express.js Express.js jest pakietem które pozwala na tworzenie aplikacji internetowych o architekturze MVC (serwisowej). Ułatwia obsługę żądań HTTP i wprowadza szerokie możliwości tworzenia aplikacji internetowych / sieciowych. > npm install express

15 Node.js Prosty serwer HTTP utworzony w Node.js: const http = require('http'); const hostname = ' '; const port = 3000; const server = http.createserver((req, res) => { res.statuscode = 200; res.setheader('content-type', 'text/plain'); res.end('hello World\n'); ); server.listen(port, hostname, () => { console.log(`server running at ); Po uruchomieniu tej aplikacji powstał serwer http oczekujący na żądania na porcie Po otrzymaniu żądania http serwer zwraca odpowiedź OK przesyłając do wyświetlenia zwykły tekst: Hello World, który jest widoczny w przeglądarce.

16 Node.js + Express.js //- plik app.js const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('hello World!') ); app.listen(3000, () => { console.log('serwer dziala na porcie 3000!') ); Prosta aplikacja napisana z użyciem Express.js nasłuchująca żądań na porcie 3000 i odsyłająca odpowiedź w postaci tekstu. Przedstawiony kod w zasadzie niczym nie różni się od prostego serwera HTTP. ma jednak kilka zalet.

17 Node.js Uruchamianie aplikacji za pomocą Node.js app.js Jeśli Node.js został zainstalowany globalnie na komputerze, jego uruchomienie polega na wywołaniu z konsoli polecenia: > node app.js Hello World

18 Aplikacja internetowa: model dynamiczny Model dynamiczny: Użytkownik JavaScript Żądanie HTTP Serwer HTTP Serwer aplikacji Interfejs użytkownika HTML CSS AJAX Odpowiedź HTTP: XML JSON Aplikacja Sieć Dane 1. Przeglądarka (użytkownik poprzez GUI) wysyła żądanie wyświetlenia treści HTML. 2. Strona zawiera skrypt JavaScript który jest odpowiedzialny za wyświetlenie podstawowej struktury HTML. 3. JavaScript wykonuje żądanie AJAX do serwera HTTP, w celu pobrania zawartości za pomocą API serwera aplikacji. 4. Serwer aplikacji pobiera żądane dane z modelu danych (np. bazy SQL). 5. Następnie serwer aplikacji odsyła dane do klienta w formacie np. JSON lub XML. 6. Silnik AJAX otrzymuje te informacje, skrypt JavaScript wykorzystując te informacje, modyfikuje DOM strony HTML w celu wyświetlenia pobranej zawartości.

19 Wzorce projektowe - MVC Model-View-Controller (MVC) [Model-Widok-Kontroler] - jest to wzorzec projektowy (podejście które jest bazą w oparciu o którą tworzymy aplikację), dzielący projektowaną aplikację na trzy warstwy: - Model (dane / logika) - Widok (prezentacja danych) - Kontroler (interakcja z użytkownikiem + sterowanie aplikacją) MODEL VIEW CONTR OLLER Można go zaimplementować bez użycia bibliotek czy specjalistycznych platform programistycznych, stosując jasne reguły podziału na konkretne komponenty w kodzie źródłowym. W ten sposób każdy komponent aplikacji można niezależnie od siebie rozwijać, implementować i testować.

20 Wzorce projektowe - MVC Jak działa MVC? 1. Użytkownik wykonuje (określoną) czynność w aplikacji. 2. Wyzwalana jest procedura obsługi zdarzenia (wywołanego przez użytkownika) w kontrolerze. 3. Kontroler pozyskuje dane z modelu i następuje przekazuje je do widoku. 4. W widoku dane są prezentowane użytkownikowi. M C V Przykład synchroniczny czat: 1. Użytkownik wpisuje wiadomość na czacie. 2. Wyzwalana jest procedura obsługi przekazania wiadomości. 3. Kontroler komunikuje się z modelem i zapisuje nową wiadomość. 4. Kontroler uaktualnia widok 5. Użytkownik widzi nową wiadomość w oknie czatu.

21 Node.js + Express.js //- plik app.js const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('hello World!') ); Dołączenie modułu Express.js Wywołanie metody obsługi żądania HTTP app.listen(3000, () => { console.log('serwer dziala na porcie 3000!') ); Uruchomienie serwera nasłuchującego żądań na porcie 3000 Kod powyżej umożliwia uruchomienie serwera HTTP oraz obsługę żądań przychodzących od klientów. Obsługa żądań odbywa się za pomocą tzw. trasowania, tzn. uzależnienie wykonania określonej czynności przez serwer od wprowadzenia poprawnego adresu URL. Każdy adres URL powinien (trasa) powinna obsługiwać jedną czynność. Czynności jakie mogą zostać podjęte w wyniku przyjścia żądania to najczęściej odesłanie klientowi określonego żądanego zasobu w postaci pliku HTML lub danych w postaci pliku JSON.

22 Generator Express.js Express.js jest modułem pozwalającym na tworzenie aplikacji w oparciu o architekturę MVC. Dla ułatwienia na początku możemy utworzyć (wygenerować) szkielet projektu który następnie możemy samodzielnie rozbudowywać. Do tego celu służy narzędzie zwane: express-generator. Aby wygenerować szkielet nowego projektu należy: 1. Utworzyć nowy katalog projektu: > mkdir test 2. Na utworzonym katalogu wykonać polecenie: > express test 3. Wejść do katalogu i wykonać w nim polecenie: > cd test && npm install 4. Uruchomić aplikację node/express: > npm start W tym kroku tworzona jest struktura kartotek oraz pliki z szkieletem aplikacji. Instalowanie niezbędnych modułów. Uruchomienie serwera HTTP

23 Generator Express.js Generator po zakończeniu działania tworzy w pełni działającą aplikację MVC gotową do uruchomienia. Struktura kartotek jest następująca: MODEL CONTR OLLER VIEW Uwaga: Brak wyodrębnionego modelu w szkielecie projektu. Logikę biznesową danej aplikacji należy zaprojektować i następnie zaimplementować w ramach szkieletu.

24 Generator Express.js Generator po zakończeniu działania tworzy w pełni działającą aplikację MVC gotową do uruchomienia. Struktura kartotek jest następująca: Plik zawierający informację o aplikacji oraz wszystkie niezbędne zależności dodatkowych modułów. Główny plik aplikacji app.js Kartoteka plików publicznych (dostępnych dla klienta) Kartoteka z plikami tras Kartoteka z plikami widoku Pliki uruchomieniowe serwera HTTP

25 Generator Express.js Strona widoczna po uruchomieniu aplikacji 0 Po uruchomieniu aplikacja działa jako serwer HTTP nasłuchujący na adresie IP: oraz standardowym porcie 3000

26 Generator Express.js Uruchomienie aplikacji Konsola wywołanych żądań przychodzących do serwera HTTP Komunikaty wyświetlane w konsoli serwera HTTP Po uruchomieniu aplikacja działa jako serwer HTTP nasłuchujący na adresie IP: oraz standardowym porcie 3000

27 Generator Express.js Przykład implementacji modułu w ramach projektu Express: 1. Tworzymy w ramach projektu dodatkową kartotekę np. o nazwie modules w której będziemy przechowywać elementy logiki biznesowej (moduły): > mkdir modules && cd modules 2. Tworzymy odpowiedni plik modułu, który następnie udostępniamy poprzez obiekty exports i modules (użyjmy poprzedniego przykładu z kalkulatorem): class Kalkulator { constructor(a,b){ this.x = a; this.y = b; Dodaj() { return this.x + this.y; Odejmij() { return this.x - this.y; ; module.exports = Kalkulator; Plik o nazwie kalkulator.js" zlokalizowany w katalogu: modules.

28 Generator Express.js Przykład implementacji modułu w ramach projektu Express: 3. W pliku kontrolera głównego (jeśli to w nim chcemy skorzystać z modułu) importujemy nowy moduł. Następnie w ramach obsługi jednej z tras wykorzystujemy funkcjonalności stworzonego modułu: var express = require('express'); var router = express.router(); const Kalkulator = require(../modules/kalkulator.js ); /* GET home page. */ router.get('/', function(req, res, next) { var k = new Kalkulator(4,5); var d = k.dodaj(); res.render('index', { wynik: d ); ); module.exports = router;

29 Express.js { "name": "projekt0", "version": "0.0.0", "private": true, "scripts": { "start": "node./bin/www", "dependencies": { "body-parser": "~1.12.0", "cookie-parser": "~1.3.4", "debug": "~2.1.1", "ejs": "~2.3.1", "express": "~4.12.2", "morgan": "~1.5.1", "serve-favicon": "~2.2.0" Plik: package.json Podstawowe informacje o projekcie Skrypt uruchomieniowy aplikacji Informacje o zależnościach (modułach) niezbędnych do działania aplikacji i ich wersjach Plik ten powstaje automatycznie w momencie generowania szkieletu projektu. Plik ten uaktualniany przy każdej instalacji dodatkowego modułu npm przez wydanie polecenia: > npm install nazwa_pakietu --save

30 Express.js #!/usr/bin/env node // Module dependencies. var app = require('../app'); var debug = require('debug')('projekt0:server'); var http = require('http'); // Get port from environment and store in Express. var port = normalizeport(process.env.port '3000'); app.set('port', port); // Create HTTP server. var server = http.createserver(app); // Listen on provided port, on all network interfaces. server.listen(port); server.on('error', onerror); server.on('listening', onlistening); Plik:./bin/www Plik tworzący serwer i obsługujący nasłuchiwanie żądań za pomocą protokołu HTTP Ustalenie portu na którym nasłuchuje serwer HTTP: domyślnie 3000 lub podany jako zmienna środowiskowa BASH Utworzenie serwera HTTP Uruchomienie nasłuchiwania

31 Express.js var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieparser = require('cookie-parser'); var bodyparser = require('body-parser'); var routes = require('./routes/index'); var users = require('./routes/users'); Plik: app.js Pliki tras kontrolera, wszystkie które znajdują się w kartotece routes var app = express(); // view engine setup app.set('views', path.join( dirname, 'views')); app.set('view engine', 'ejs'); // uncomment after placing your favicon in /public app.use(logger('dev')); app.use(bodyparser.json()); app.use(bodyparser.urlencoded({ extended: false )); app.use(cookieparser()); app.use(express.static(path.join( dirname, 'public'))); app.use('/', routes); app.use('/users', users); module.exports = app; Określenie języka szablonów oraz katalogu w którym się znajdują Definicja ścieżki do kartoteki public widocznej dla klienta Związanie plików kontrolerów z odpowiednimi trasami. Odwzorowanie adresów URL na strukturę katalogów

32 Express.js var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieparser = require('cookie-parser'); var bodyparser = require('body-parser'); var routes = require('./routes/index'); var users = require('./routes/users'); Plik: app.js Pliki tras kontrolera, wszystkie które znajdują się w kartotece routes var app = express(); // view engine setup app.set('views', path.join( dirname, 'views')); app.set('view engine', 'ejs'); // uncomment after placing your favicon in /public Zmienna przechowująca app.use(logger('dev')); informację o katalogu app.use(bodyparser.json()); projektu. app.use(bodyparser.urlencoded({ extended: false )); app.use(cookieparser()); app.use(express.static(path.join( dirname, 'public'))); app.use('/', routes); app.use('/users', users); module.exports = app; Określenie języka szablonów oraz katalogu w którym się znajdują Definicja ścieżki do kartoteki public widocznej dla klienta Związanie plików kontrolerów z odpowiednimi trasami. Odwzorowanie adresów URL na strukturę katalogów

33 Express.js var express = require('express'); var router = express.router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' ); ); module.exports = router; Plik: routes/index.js Pojedyncza tras obsługująca określone żądanie przychodzące od klienta. Odpowiedź na żądanie klienta jest formułowana za pomocą mechanizmu funkcji wywołania zwrotnego callback.

34 Express.js var express = require('express'); Plik: routes/index.js var router = express.router(); req - obiekt żądania przychodzącego od klienta /* GET home page. */ res - obiekt odpowiedzi (do klienta) router.get('/', function(req, res, next) { res.render('index', { title: 'Express' ); ); module.exports = router; Pojedyncza tras obsługująca określone żądanie przychodzące od klienta. Odpowiedź na żądanie klienta jest formułowana za pomocą mechanizmu funkcji wywołania zwrotnego callback. Najważniejszą rolę w kodzie powyżej spełnia obiekt router, który jest odpowiedzialny za trasowanie czyli obsługę wszystkich wywołań adresów URL. Każda trasa może posiadać jedną lub więcej funkcji obsługi trasy. W momencie rejestracji żądania router określa która funkcji obsługi trasy zostanie wykonana. Ogólna postać funkcji obsługi trasy wygląda następująco: router.metoda( TRASA, OBSŁUGA TRASY ) Metoda HTTP np. GET, POST, PUT, DELETE Trasa: adres URL żądania klienta Najczęściej wywołanie zwrotne realizujące określoną funkcjonalność.

35 Express.js Przykłady funkcji obsługi żądań: router.get('/', function (req, res) { res.send('hello World!'); ); router.post('/', function (req, res) { res.send('żądanie POST'); ); Funkcja obsługująca tą samą Funkcja trasę /, ale dla dwóch różnych możliwych metod HTTP. Bardzo często trasa w postaci adresu URL oraz metoda (np. GET) w literaturze określana jest jako END-POINT. router.put('/user', function (req, res) { ); res.send('żądanie PUT dla URL /user'); Funkcja Podobnie jak poprzednio dwie usługi END-POINT. router.delete('/user', function (req, res) { ); res.send('żądanie DELETE dla URL /user');

36 Express.js Pojęcie END-POINTU jest bardzo istotne z punktu widzenia tworzenia w przyszłości aplikacji o charakterze API (interfejsów). W typowych aplikacjach internetowych skrypty wykonywane po stronie klienta (w przeglądarce) komunikują się z serwerem asynchronicznie za pomocą wywołań kierowanych do odpowiednich endpointów. W Express.js nazwą trasy może być: (a) łańcuch znakowy, (b) wzorzec, (c) wyrażenie regularne. Znaki? +, * mają takie samo znaczenie jak w przypadku wyrażeń regularnych tj:? - wyrażenie występuje 0 lub 1 raz + - wyrażenie występuje 1 lub więcej razy * - wyrażenie występuje 0 lub więcej razy, albo zaczyna się od danego znaku Natomiast. oraz - są interpretowane jako elementy statyczne łańcuchów. Dodatkowo można używać nawiasów ( ) określania grupy znaków których mają dotyczyć pokazane kwantyfikatory. router.get( '/', function(){ ); router.get( '/test', function(){ );

37 Koniec wykładu 6

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Co to jest NODE.JS? Nowoczesne środowisko programistyczne Node.js Co to jest NODE.JS? Nowoczesne środowisko programistyczne Środowisko programistyczne w sensie zestawu gotowych klas i metod których można używać do przygotowania własnych skalowalnych i wydajnych

Bardziej szczegółowo

Express.js i własne API - pomoc do lab02

Express.js i własne API - pomoc do lab02 xpress.js i własne API - pomoc do lab02 1/27 Express.js i własne API - pomoc do lab02 Tworzenie serwisów Web 2.0 dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki

Bardziej szczegółowo

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS) Zaawansowane Techniki WWW (HTML, CSS i NODE.JS) Dr inż. Marcin Zieliński Środa 15:30-17:00 sala: A-1-04 WYKŁAD 8 Wykład dla kierunku: Informatyka Stosowana II rok Rok akademicki: 2014/2015 - semestr zimowy

Bardziej szczegółowo

ZAAWANSOWANE TECHNIKI WWW (zajęcia r. i r.)

ZAAWANSOWANE TECHNIKI WWW (zajęcia r. i r.) ZAAWANSOWANE TECHNIKI WWW (zajęcia 18.11.2017 r. i 17.12.2017 r.) 1. Przygotowanie środowiska pracy back-end (Node.js) NodeJS (wersja LTS: 8.9.1) jest zaawansowanym środowiskiem do tworzenia skalowalnych

Bardziej szczegółowo

server.listen(port, hostname, () => { console.log(`server running at });

server.listen(port, hostname, () => { console.log(`server running at  }); TECHNIKI WWW (WFAIS.IF-C125) (zajęcia 04.01.2017 r. i 11.01.2017) Dla przypomnienia uruchamianie serwera http podającego statyczną treść polegało na stworzeniu skryptu wraz z osadzonym kodem statycznej

Bardziej szczegółowo

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

PROJEKTOWANIE APLIKACJI INTERNETOWYCH PROJEKTOWANIE APLIKACJI INTERNETOWYCH (WFAIS.IF-N016) dr inż. Marcin Zieliński Wykład dla kierunku: Informatyka Stosowana I rok, II stopień Rok akademicki: 2016/2017 - semestr letni WYKŁAD 2 Przypomnienie

Bardziej szczegółowo

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne: Popularne dostępne rozwiązania Najpopularniejsze środowiska programistyczne: Popularne dostępne rozwiązania Najpopularniejsze środowiska programistyczne: oraz systemy CMS (Content Menager System): Dlaczego

Bardziej szczegółowo

MEAN Stack - Node.js, express

MEAN Stack - Node.js, express EAN Stack - Node.js, express 1/48 MEAN Stack - Node.js, express Tworzenie serwisów Web 2.0 dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

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

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia Kod szkolenia: Tytuł szkolenia: DED/FSJS Full Stack JavaScript z Angular i Nest Dni: 5 Opis: Adresaci szkolenia Kurs przeznaczony jest dla programistów posiadających podstawową wiedzę w zakresie JavaScript,

Bardziej szczegółowo

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar) Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Rodzaje zawartości Zawartość statyczna Treść statyczna (np. nagłówek, stopka) Layout, pliki multimedialne, obrazki, elementy typograficzne,

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2 Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2 Statyczne strony HTML Wczytanie statycznej strony HTML sprowadza się do odebrania żądania przez serwer, odnalezienia właściwego pliku

Bardziej szczegółowo

PHP: bloki kodu, tablice, obiekty i formularze

PHP: bloki kodu, tablice, obiekty i formularze 1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują

Bardziej szczegółowo

Funkcje i instrukcje języka JavaScript

Funkcje i instrukcje języka JavaScript Funkcje i instrukcje języka JavaScript 1. Cele lekcji a) Wiadomości Uczeń : zna operatory i typy danych języka JavaScript, zna konstrukcję definicji funkcji, zna pętlę If i For, Do i While oraz podaje

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych

Bardziej szczegółowo

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Aplikacje webowe z wykorzystaniem Node.js oraz Express Aplikacje webowe z wykorzystaniem Node.js oraz Express Adresaci szkolenia: Kurs przeznaczony jest dla programistów pragnących tworzyć skalowalne aplikacje z wykorzystaniem Node.js. Parametry szkolenia:

Bardziej szczegółowo

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails Plan prezentacji Framework Rails Ruby on Rails podstawowe założenia DRY: nie powtarzaj się Ruby on Rails podstawowe założenia DRY: nie powtarzaj

Bardziej szczegółowo

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami. LABORATORIUM 5: WebRTC komunikacja między terminalami. Wprowadzenie Technika WebRTC (złożenie angielskiego słowa Web oraz akronimu RTC, pochodzącego od angielskiego Real-Time Communications, komunikacja

Bardziej szczegółowo

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java Informatyka I Standard JDBC Programowanie aplikacji bazodanowych w języku Java dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Standard JDBC Java DataBase Connectivity uniwersalny

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ

REFERAT PRACY DYPLOMOWEJ REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej JSP - Java Server Pages dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2019 Aplikacje i skrypty WWW klasyfikacja

Bardziej szczegółowo

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

PROJEKTOWANIE APLIKACJI INTERNETOWYCH PROJEKTOWANIE APLIKACJI INTERNETOWYCH (WFAIS.IF-N016) dr inż. Marcin Zieliński Wykład dla kierunku: Informatyka Stosowana I rok, II stopień Rok akademicki: 2016/2017 - semestr letni WYKŁAD 1 Konsultacje

Bardziej szczegółowo

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

PROJEKTOWANIE APLIKACJI INTERNETOWYCH PROJEKTOWANIE APLIKACJI INTERNETOWYCH (WFAIS.IF-N016) dr inż. Marcin Zieliński Wykład dla kierunku: Informatyka Stosowana I rok, II stopień Rok akademicki: 2016/2017 - semestr letni WYKŁAD 3 Przypomnienie

Bardziej szczegółowo

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Program szkolenia: Przygotowanie do nowoczesnego programowania po stronie przeglądarki (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:

Bardziej szczegółowo

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5. AJAX Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5. Czym jest AJAX? AJAX (Asynchronous JavaScript And XML) nie jest nową technologią, ale nowym sposobem wykorzystania kombinacji istniejących technologii

Bardziej szczegółowo

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf Materiały poprawione Rozwiązanie zadania w NetBeans IDE 7.4: Jarosław Ksybek, Adam Miazio Celem ćwiczenia jest przygotowanie prostej aplikacji

Bardziej szczegółowo

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Akademia MetaPack Uniwersytet Zielonogórski Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Krzysztof Blacha Microsoft Certified Professional Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Agenda:

Bardziej szczegółowo

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński rperlinski@icis.pcz.pl

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński rperlinski@icis.pcz.pl ngular, cz. II 1/24 Angular, cz. II Tworzenie serwisów Web 2.0 dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej 10 kwietnia 2015

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Technologie obiektowe

Technologie obiektowe WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność

Bardziej szczegółowo

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery Łukasz Bartczuk Moduł 6 JavaScript w przeglądarce Agenda Skrypty na stronie internetowej Model DOM AJAX Skrypty na stronie

Bardziej szczegółowo

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski Uniwersytet Warszawski 6 kwiecień 2009 Spis Treści 1 MVC Jak to wygląda w JavascriptMVC 2 Prawie jak klasy 3 Hierarchia Widoki Kontrolery Modele 4 Struktura katalogów Generatory kodu Generatory dokumentacji

Bardziej szczegółowo

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć

Bardziej szczegółowo

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. Informatyka I Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 Standard JDBC Java DataBase Connectivity

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i budowa systemu zarządzania treścią opartego na własnej bibliotece MVC Autor: Kamil Kowalski W dzisiejszych czasach posiadanie strony internetowej to norma,

Bardziej szczegółowo

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

WYKŁAD 1 ANGULARJS CZĘŚĆ 1 WYKŁAD 1 ANGULARJS CZĘŚĆ 1 DEFINICJA ANGULARJS Framework JavaScript na licencji open-source wykorzystywany do tworzenia aplikacji SPA (single page applications) w oparciu o wzorzec projektowy Model-View-Controler.

Bardziej szczegółowo

Należy ściągnąć oprogramowanie Apache na platformę

Należy ściągnąć oprogramowanie Apache na platformę Programowanie Internetowe Język PHP - wprowadzenie 1. Instalacja Oracle+Apache+PHP Instalacja Apache, PHP, Oracle Programy i ich lokalizacja Oracle Database 10g Express Edition10.2 http://www.oracle.com/technology/products/database/

Bardziej szczegółowo

Plan. Aplikacja. Architektura aplikacji. Architektura aplikacji Tworzenie aplikacji Application Builder podstawy

Plan. Aplikacja. Architektura aplikacji. Architektura aplikacji Tworzenie aplikacji Application Builder podstawy Plan Podstawy narzędzia Application Builder, 2 budowa strony, kreatory Architektura Tworzenie Tworzenie formularza tabelarycznego Budowa strony 2 Architektura Aplikacja kolekcja stron połączonych ze sobą

Bardziej szczegółowo

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów A Zasady współpracy Ocena rozwiązań 3.0 25 40 punktów 3.5 41 65 punktów 4.0 66 80 punktów 4.5 81 100 punktów 5.0 101 130 punktów Warunki zaliczenia przedmiotu Student uzyska ocenę zaliczającą (3.0) o ile

Bardziej szczegółowo

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do Sesje i ciasteczka Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do śledzenia użytkownika podczas jednej sesji

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

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz Projektowanie oprogramowania Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz 1 Wykonanie czterowarstwowej aplikacji EE z dostępem do bazy danych,

Bardziej szczegółowo

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Program szkolenia: Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Produktywne tworzenie aplikacji webowych z

Bardziej szczegółowo

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 8 PHP, czyli poczatki nowej, dynamicznej znajomosci Na dzisiejszych zajęciach rozpoczniemy programowanie po stronie serwera w języku PHP. Po otrzymaniu żądania serwer

Bardziej szczegółowo

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop. 2016 Spis treści Przedmowa 1 Stosowana notacja 1 1. Wprowadzenie 3 1.1. Konsola interaktywna języka Scala 3 1.2. Zmienne 5 1.3. Wartości

Bardziej szczegółowo

Spring Web MVC, Spring DI

Spring Web MVC, Spring DI Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Laboratorium 5 Spring Web MVC, Spring DI Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 Technologie Technologie / narzędzia będące

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

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce

Bardziej szczegółowo

Zaawansowane aplikacje internetowe

Zaawansowane aplikacje internetowe Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

Bardziej szczegółowo

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest

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

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone Typy przetwarzania Przetwarzanie zcentralizowane Systemy typu mainfame Przetwarzanie rozproszone Architektura klient serwer Architektura jednowarstwowa Architektura dwuwarstwowa Architektura trójwarstwowa

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

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2] 1. CEL ĆWICZENIA Celem ćwiczenia jest przedstawienie możliwości wykorzystania języka JavaScript do tworzenia interaktywnych aplikacji działających po stronie klienta. 2. MATERIAŁ NAUCZANIA JavaScript tak

Bardziej szczegółowo

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji: Technologia wykonania projektu: HTML5 Javascript: o jquery (1.9.1), o CreateJS (0.6.1): EaselJS, TweenJS, PreloadJS. Części funkcjonalne projektu: Strona internetowa pliki strony internetowej zlokalizowane

Bardziej szczegółowo

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów System Szablonów System szablonów System szablonów to biblioteka, która pozwala oddzielić warstwę prezentacji od warstwy logicznej. Aplikacja WWW najpierw pobiera wszystkie dane, przetwarza je i umieszcza

Bardziej szczegółowo

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

Bardziej szczegółowo

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache

Bardziej szczegółowo

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //...

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //... JQuery jquery (jquery.com) to jedna z najbardziej popularnych bibliotek/frameworków do javascript. Jej popularność oczywiście znikąd się nie bierze. Dzięki tej bibliotece jesteśmy w stanie o wiele szybciej

Bardziej szczegółowo

Forum Client - Spring in Swing

Forum Client - Spring in Swing Forum Client - Spring in Swing Paweł Charkowski. 0. Cel projektu Celem projektu jest próba integracji Spring Framework z różnymi technologiami realizacji interfejsu użytkownika, oraz jej ocena. Niniejszy

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

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

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy

Bardziej szczegółowo

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium

Bardziej szczegółowo

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym 1 Wprowadzenie do środowiska Oracle APEX, obszary robocze, użytkownicy Wprowadzenie Plan Administracja obszarem roboczym 2 Wprowadzenie Co to jest APEX? Co to jest APEX? Architektura Środowisko Oracle

Bardziej szczegółowo

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

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy

Bardziej szczegółowo

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

Języki i metody programowania Java. Wykład 2 (część 2) Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Test przykładowy 2 PAI WSB Wrocław /06/2018

Test przykładowy 2 PAI WSB Wrocław /06/2018 Imię i Nazwisko: Student ID: Part 1: (Prawda lub Fałsz (T lub F)) 15. Która z poniższych deklaracji funkcji jest nieprawidłowa: A. function Sum(a, b, c){; B. function Sum(var a, var b); C. function Sum(a){;

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

Podstawy programowania w języku JavaScript

Podstawy programowania w języku JavaScript Podstawy programowania w języku JavaScript Część piąta AJAX Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.siminskionline.pl Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych

Bardziej szczegółowo

Tworzenie Stron Internetowych. odcinek 10

Tworzenie Stron Internetowych. odcinek 10 Tworzenie Stron Internetowych odcinek 10 JavaScript JavaScript (ECMAScript) skryptowy język programowania powszechnie używany w Internecie. Skrypty JS dodają do stron www interaktywność i funkcjonalności,

Bardziej szczegółowo

Walidacja danych w ASP.NET MVC

Walidacja danych w ASP.NET MVC Walidacja danych w ASP.NET MVC 1. Prosta walidacja 2. Walidacja z Data Annotation public ActionResult Edit(Person person) bool blad = false; if(person.name.trim().length == 0) ViewData["Blad1"] = "Nazwisko

Bardziej szczegółowo

Przykład połączenie z bazą danych

Przykład połączenie z bazą danych Instalacja BPEL... 1 Przykład połączenie z bazą danych... 2 Development... 2 Utwórz Aplikację i projekt o typie SOA... 2 Utwórz adapter do bazy danych... 4 Utwórz proces BPEL... 7 Połącz BPEL z adapterem

Bardziej szczegółowo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy

Bardziej szczegółowo

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013 Przewodnik instalacji i rozpoczynania pracy Dla DataPage+ 2013 Ostatnia aktualizacja: 25 lipca 2013 Spis treści Instalowanie wymaganych wstępnie komponentów... 1 Przegląd... 1 Krok 1: Uruchamianie Setup.exe

Bardziej szczegółowo

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia

Bardziej szczegółowo

Zmienne i stałe w PHP

Zmienne i stałe w PHP Zmienne i stałe w PHP Zmienne Zmienne to konstrukcje programistyczne, które pozwalają na przechowywanie danych. Każda zmienna posiada swoją nazwę oraz typ. Nazwa to jednoznaczny identyfikator, dzięki któremu

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

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4 Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Smalltalk Marcin Benke 15 stycznia 2007 Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 1 / 26 Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia

Bardziej szczegółowo

Backend Administratora

Backend Administratora Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona

Bardziej szczegółowo

Materiały dla studentów Informatyki WSZiB w Krakowie

Materiały dla studentów Informatyki WSZiB w Krakowie Tworzenie aplikacji w języku JavaScript Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie http://artemis.wszib.edu.pl/~polak/ Materiały dla studentów

Bardziej szczegółowo

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi 1 Rozdział 1 Wprowadzenie do PHP i MySQL Opis: W tym rozdziale kursanci poznają szczegółową charakterystykę

Bardziej szczegółowo