softwareová architektura

21
Softwareová architektura Miroslav Šimek [email protected] ([email protected] )

Upload: moses-zamora

Post on 30-Dec-2015

41 views

Category:

Documents


0 download

DESCRIPTION

Miroslav Šimek [email protected] ( [email protected] ) ‏. Softwareová architektura. Náplň. Úvod do sfw architektury modely vývoje software návrhové vzory Implementace projektu v jazyce Java. Formální. Formálně 2 přednáška + 3 cvičení, ve skutečnosti 5 (hands-on) seminář - PowerPoint PPT Presentation

TRANSCRIPT

Page 2: Softwareová architektura

Náplň

Úvod do sfw architektury modely vývoje software návrhové vzory

Implementace projektu v jazyce Java

Page 3: Softwareová architektura

Formální ...

Formálně 2 přednáška + 3 cvičení, ve skutečnosti 5 (hands-on) seminář

V průběhu budeme vyvíjet Java aplikaci – každý člověk sám za sebe

Aplikace je jedinou podmínkou pro získání kreditů

Cvičení na sebe navazují, každá absence snižuje pravděpodobnost dokončení aplikace !

Page 4: Softwareová architektura

Aplikace

Web Shop requirements mockup analýza design implementace v jazyce Java

UI vrstva Objektový model (business logic) Databázová vrstva

Page 5: Softwareová architektura

Doporučená literatura

Bruce Eckel: Thinking in Java http://www.codeguru.com/java/tij

en.wikipedia.org design patterns uml ...

Javadoc http://java.sun.com/javase/6/docs/api/

slides, software atp. jsou k dispozici nahttp://ich.vscht.cz/dokuwiki/softwareova_architektura_zima_2008

Page 6: Softwareová architektura

Proč Java

Oblíbenost Java .net Rails Django PHP

Akceptovanost Java .net PHP

Page 7: Softwareová architektura

Umístění v hierarchii jazyků

mikroinstrukce

strojový kód

assembler

C

C++

Java .net

Python Ruby/Rails

PHP

Perl

Page 8: Softwareová architektura

Java v praxi

70% připadá na webové aplikace 10% mobilní aplikace 20% ostatní (konektory systémů, ...)

Page 9: Softwareová architektura

Náplň Java části

Jazyk Java Typový systém Javy Kolekce Rozšiřování typů

Java pro web JSP, JSF

Java pro databáze Hibernate

Pokročilé věci Další knihovny, vlákna, ...

Page 10: Softwareová architektura

Rozdíly Java vs. Python

Statická vs. dynamická typová kontrola Kompaktnost Knihovny Rychlost vykonávání programu

Page 11: Softwareová architektura

Statická typová kontrola

Python a = 10 b = 1.23 s = ”hello world” c = True a = b

Java int a = 10; float b = 1.23; String s = ”hello world”; boolean c = true; a = b; ??

proměnná

objekt

typ

proměnná

objekt

typ

typ

Page 12: Softwareová architektura

Operace nad čísly

Python +-*/%

Java +-*/%

Page 13: Softwareová architektura

Větvení

Python if podminka:

necoelse:

neco

Java if (podminka) {

neco} else { neco}

Page 14: Softwareová architektura

Cykly

Python for i in range(0, 10):

do_something

Java for (int i = 0;

i < 10; i++) { do_something;}

while i<10:do_something

break continue

while (i<10) {do_something;

}

break; continue;

Page 15: Softwareová architektura

Tisk na stdout

Python print ”blah”

print ”blah”,

Java System.out.println

(”blah”);

System.out.print

(”blah”);

Page 16: Softwareová architektura

Příklady v BeanShellu

Faktoriál čísel 1...10 f(n)=1 . 2 . ... . n

prvních 20 Fibonacciho čísel f(n) = f(n) + f(n-1), f(0) = f(1) = 1

pro a=1..5 (power tower)a aa( )

Page 17: Softwareová architektura

Typy II

Numerické typy: byte, short, int, long, float, double

Automatické přetypování byte → short → int → long → float → double

Ruční přetypování int a = (int) 2.5;

Page 18: Softwareová architektura

Deklarace funkcí

Python def function(a, b):

return a+b

Java int function(int a, int b)

{return a+b;

}

jmenná konvence: camelCase

Page 19: Softwareová architektura

Příklady v BeanShellu

Pro předchozí příklady zaveďte funkce, které vrátí:

factorial(n) fibonacci(n) powerTower(n)

pascalův trojúhelník funkce pascalNumber(n, k) program, který vytiskne prvních 20 řádek program, která vytiskne prvních 20 řádek modulo 2

Page 20: Softwareová architektura

Pole

Python a = [1, 2, 3] a[1] = 4 b = [0 for i in range(0, 10)] len(b)

for i in a:print i

Java int[] a = { 1, 2, 3 }; a[1] = 4; int[] b = new int[10]; b.length

for (int i : a) {System.out.println

(i);}

Page 21: Softwareová architektura

Příklady v BeanShellu

Vytvořte funkci dice1(), která vrací náhodné číslo od 1-6 s uniformním rozdělením. Pro vygenerování náhodného čísla použijte funkci Math.random(), která vrací náhodné číslo v intervalu [0, 1)

Napište funkci diceN(n), která vrátí pole n hodů Napište následující statistické funkce:

minItem(arr), maxItem(arr) mean(arr) – vrací aritmetický průměr prvků pole distribution(arr) – vrací pole 6-ti prvků obsahující

procentuální zastoupení čísel 1..6