Agenda. Bazy danych SQLite Zestawienie mapowania w LiteORM Wyświetlanie danych w ListView

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

Download "Agenda. Bazy danych SQLite Zestawienie mapowania w LiteORM Wyświetlanie danych w ListView"

Transkrypt

1 Android WYKŁAD 4

2 Agenda Bazy danych SQLite Zestawienie mapowania w LiteORM Wyświetlanie danych w ListView Pobieranie danych z sieci Volley Zapytania GET i POST Zapytania JSON Przeglądanie obiektów JSON Wątki Handler i AsyncTask Zakonczenie

3 Konsultacje projektów DATY: GODZINA: 15:00 16:30 MIEJSCE: B5-605

4 SQLite Silnik relacyjnych baz danych oparty na plikach Wspierane przez narzędzia ORM takie jak Hibernate czy ORMLite Idealny do składowania strukturalnych danych będących w relacjach (np. listy obiektów) Wiele narzędzi do projektowania/podglądu i edycji: DB Browser for SQLite SQLiteStudio SQLite Expert

5 SQLite z ORM w Android Przykład: Aplikacja do ewidencji punktów w grze Zależności (app/build.gradle): dependencies { compile filetree(dir: 'libs', include: ['*.jar']) testcompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.j256.ormlite:ormlite-android:4.48' Gradle pobierze bibliotekę automatycznie z repozytorium, skompiluje i włączy do projektu

6 ORMLite Model + mapowanie Modele public class Game = true) public int public Date public int = false, foreign = true, foreignautorefresh = true) public Player player; public Game() { Automatyczne generowanie ID Klucz obcy Pusty konstruktor jest wymagany! public class Player = true) public int = true) public String name; public Player(String name) { this.name = name; public Player() { public Game(Date date, int score, Player player) { this.date = date; this.score = score; this.player = player;

7 ORMLite Model + mapowanie Skanowanie adnotacji jest bardzo kosztowne czasowo szczególnie przy dużych bazach danych Skrypt należy uruchomić ręcznie w celu wygenerowania statycznej konfiguracji public class DatabaseConfigUtil extends OrmLiteConfigUtil { private static final Class<?>[] classes = new Class[] { Player.class, Game.class ; public static void main(string[] args) throws SQLException, IOException { writeconfigfile(new File("[SCIEZKA_DO_PROJEKTU]\\app\\src\\main\\res\\raw\\orml ite_config.txt"), classes); Plik res/raw/ormlite_config.txt zostanie utworzony automatycznie na podstawie adnotacji w klasach Czynność powtarzamy po każdej zmianie w modelu

8 OrmLiteSqliteOpenHelper Klasa ułatwiająca obsługę podstawowych czynności wykonywanych na bazie danych Wymaga implementacji następujących metod: Konstruktor Ustawienie nazwy bazy, wersji, pliku z konfiguracją oncreate Zdarzenie towarzyszące stworzeniu bazy danych, czyli jakie tabele stworzyć i co mapować onupgrade Zdarzenie towarzyszące aktualizacji bazy (kiedy zmienia się jej schemat). Miejsce na wykonanie migracji schematu.

9 OrmLiteSqliteOpenHelper - przykład Plik z bazą public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String DATABASE_NAME = "scores.db"; private static final int DATABASE_VERSION = 2; private Dao<Game, Integer> gamedao; private Dao<Player, Integer> playerdao; Data Access Object Dao<Klasa, Index> public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION, R.raw.ormlite_config); public void oncreate(sqlitedatabase sqlitedatabase, ConnectionSource connectionsource) { try { TableUtils.createTable(connectionSource, Game.class); TableUtils.createTable(connectionSource, Player.class); Przy każdej zmianie w modelach (mapowanych klasach JAVY) zmień tą wartość o jeden! catch (SQLException e) { Log.e(DatabaseHelper.class.getName(), "Unable to create datbases", e);

10 OrmLiteSqliteOpenHelper przykład cd public void onupgrade(sqlitedatabase sqlitedatabase, ConnectionSource connectionsource, int oldver, int newver) { try { TableUtils.dropTable(connectionSource, Game.class, true); TableUtils.dropTable(connectionSource, Player.class, true); oncreate(sqlitedatabase, connectionsource); catch (SQLException e) { Usuń tabele ignoruj błędy Stwórz na nowo tabele Log.e(DatabaseHelper.class.getName(), "Unable to upgrade database from version " + oldver + " to new " + newver, e); public Dao<Game, Integer> getgamedao() throws SQLException { if (gamedao == null) { gamedao = getdao(game.class); return gamedao; Akcesory dla DAO (w razie potrzeby same inicjalizują obiekt) public Dao<Player, Integer> getplayerdao() throws SQLException { if (playerdao == null) { playerdao = getdao(player.class); return playerdao;

11 Wizualizacja wpisów z bazy LISTVIEW SQLITE ADAPTER Pojedynczy wpis Adapter łączy obiekty bazodanowe DAO z pojedynczym wpisem na ListView Adapter jest podpięty do ListView w Activity

12 list_item pojedynczy wpis w ListView <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#6f6c67" > <TextView android:id="@+id/player_tv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="1px" android:layout_weight="1" android:background="#fff" android:gravity="center" android:textsize="15sp" /> Wymóg aby każdy widok zajął 1/3 miejsca dostępnego na szerokość <TextView android:id="@+id/date_tv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="#fff" android:gravity="center" android:layout_margin="1px" android:textsize="15sp" /> <TextView android:id="@+id/score_tv" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="#fff" android:gravity="center" android:layout_margin="1px" android:textsize="15sp" /> </TableRow> </LinearLayout>

13 ORMLite klasa Adapter Klasa łącząca widok (ListView) z obiektami DAO public class DatabaseAdapter extends ArrayAdapter<Game> { private List<Game> records; private Dao<Game, Integer> gamedao; public DatabaseAdapter(Context context, int itemview, List objects, Dao<Game, Integer> gamedao) { super(context, itemview, objects); this.records = objects; this.gamedao = gamedao;

14 Adapter cd. public View getview(int position, View view, ViewGroup parent) { final Game game = records.get(position); try { gamedao.refresh(game); catch (Exception e) { e.printstacktrace(); W przypadku relacji odświeżamy również obiekty dołączone przez klucze obce Renderujemy pojedynczy widok same kontrolki if (view == null) { view = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false); TextView playertv = (TextView) view.findviewbyid(r.id.player_tv); playertv.settext(game.player.name); SimpleDateFormat dateformat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); TextView datetv = (TextView) view.findviewbyid(r.id.date_tv); datetv.settext(dateformat.format(game.date)); TextView scoretv = (TextView) view.findviewbyid(r.id.score_tv); scoretv.settext(string.valueof(game.score)); Wstawiamy dane w widoku na layoucie reprezentującym jeden wpis na liście return view;

15 MainActivity - widok TableLayout z ListView do wyświetlania danych <TableLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/tablelayout" android:layout_below="@+id/button"> <ListView android:id="@+id/scorelv" android:layout_width="match_parent" android:layout_height="wrap_content"/> </TableLayout>

16 MainActivity dostęp do bazy Metoda dołącza Adapter do ListView private void connecttodatabase(){ Dao<Game, Integer> gamedao = null; try { gamedao = gethelper().getgamedao(); games = gamedao.queryforall(); ListView lvscore = (ListView) findviewbyid(r.id.scorelv); lvscore.setadapter(new DatabaseAdapter(MainActivity.this, R.layout.list_item, games, gamedao)); catch (SQLException e) { e.printstacktrace(); private DatabaseHelper gethelper() { Helper do helpera if (databasehelper == null) { databasehelper = OpenHelperManager.getHelper(this,DatabaseHelper.class); return databasehelper; protected void ondestroy() { super.ondestroy(); Zwolnienie dostępu do bazy po opuszczeniu Activity if (databasehelper!= null) { OpenHelperManager.releaseHelper(); databasehelper = null;

17 MainActivity dodawanie rekordów public void addnewplayer(view view) { EditText playernameet = (EditText) findviewbyid(r.id.playernameet); String playername = playernameet.gettext().tostring(); int score = new Random().nextInt(100); Losowe punkty Date date = new Date(); try { final Dao<Player, Integer> playerdao = gethelper().getplayerdao(); List<Player> playerslist = playerdao.querybuilder().where().eq("name", playername).query(); Pobranie danych z widoków Szukamy gracza o podanym imieniu Player player = null; if(playerslist.size() == 0){ player = new Player(playerName); playerdao.create(player); else { player = playerslist.get(0); Jeśli go znajdziemy, to dopisujemy mu wynik Jeśli nie, to tworzymy takiego gracza final Dao<Game, Integer> gamedao = gethelper().getgamedao(); Game game = new Game(date, score, player); gamedao.create(game); refreshdatabase(); Dodajemy catch (SQLException ex){ Log.i("MainActivity", ex.getmessage());

18 MainActivity odświeżanie ListView private void refreshdatabase() throws SQLException{ final Dao<Game, Integer> gamedao = gethelper().getgamedao(); games = gamedao.queryforall(); ListView lvscore = (ListView) findviewbyid(r.id.scorelv); final DatabaseAdapter adapter = (DatabaseAdapter) lvscore.getadapter(); adapter.clear(); adapter.addall(games); Odświeżenie adaptera po dodaniu nowego wpisu

19 Efekt

20 Uruchamianie Android Device Monitor Lub bezpośrednio przez: <ANDROID_SDK>\android-sdk\tools\lib\monitor-x86_64\ w moim przypadku: c:\users\krzysztof\appdata\local\android\android-sdk\tools\lib\monitor-x86_64

21 Pobieranie bazy danych na komputer /data/data/[namespace]/databases/[nazwa.db]

22 SQLite DBBrowser podgląd baz danych

23 JSON JavaScript Object Notation Lekki format serializacji obiektów. Bardzo popularny w zastosowaniach sieciowych Zbudowany na zasadzie: "klucz" : "wartość", każdy element oddzielony przecinkami Podstawowe oznaczenia: [ ] lista, elementy oddzielone przecinkami { obiekt [{, {, { ] TEKST "name": "Krzysztof", "surname": "Bzowski", "classes": ["Programowanie w JAVA", "Systemy Wbudowane", "Inżynieria internetu"], "experiance": 5 "name": "Gorzegorz", "surname": "Smyk", "classes": ["Programowanie obiektowe"], "experiance": 5 "name": "Mateusz", "surname": "Sitko", "classes": ["Podstawy programowania", "Modelowanie wieloskalowe"], "experiance": 5 STRUKTURA

24 Volley Biblioteka sieciowa przeznaczona do efektywnej i szybkiej komunikacji poprzez protokół HTTP Pozwala na asynchroniczną pracę (bez blokowania GUI) Mnóstwo innych zalet: Docelowo ma zastąpić przestarzałe klasy: HttpUrlConnection i HttpClient Uprawnienia do dostępu do sieci: AndroidManifest.xml <uses-permission android:name="android.permission.internet"/> Zależności do projektu: \app\build.gradle: dependencies { compile filetree(dir: 'libs', include: ['*.jar']) testcompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.mcxiaoke.volley:library:1.0.19' Gradle sam pobierze i skompiluje zależności!

25 Volley pierwsze starcie pobranie strony www public void connectbtnclick(view view) { RequestQueue queue = Volley.newRequestQueue(this); String url = " GET, POST, PUT, DELETE StringRequest stringrequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { public void onresponse(string response) { // metoda uruchomi się asnychronicznie jeśli treść strony zostanie pobrana // zawartość (HTML) znajduje się w zmiennej response, new Response.ErrorListener() { public void onerrorresponse(volleyerror error) { // Miejsce na obsługę błędów ); queue.add(stringrequest);

26 Volley wysyłanie danych metodą POST RequestQueue queue = Volley.newRequestQueue(this); String url = "[ADRES_URL]"; StringRequest postrequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { public void onresponse(string response) { // Odpowiedź serwera pozytywna, new Response.ErrorListener() { public void onerrorresponse(volleyerror error) { // Coś poszło nie tak, błąd! ) { protected Map<String,String> getparams(){ Map<String,String> params = new HashMap<String, String>(); params.put("value1", "4"); params.put("value2", "druga zmienna"); return params; ; queue.add(postrequest);

27 Volley pobieranie obrazków public ImageRequest(String url, Response.Listener<Bitmap> listener, int maxwidth, int maxheight, ScaleType scaletype, Config decodeconfig, Response.ErrorListener errorlistener); RequestQueue queue = Volley.newRequestQueue(this); final ImageView mimageview; String url = " mimageview = (ImageView) findviewbyid(r.id.imageview); ImageRequest postrequest = new ImageRequest(url, new Response.Listener<Bitmap>() { public void onresponse(bitmap bitmap) { mimageview.setimagebitmap(bitmap); // response zawiera obraz gotowy do wstawienia, 0, 0, ImageView.ScaleType.CENTER, Bitmap.Config.RGB_565, new Response.ErrorListener() { public void onerrorresponse(volleyerror error) { // Błąd! mimageview.setimageresource(android.r.drawable.stat_notify_error); ) { ; queue.add(postrequest);

28 Volley wysyłanie i odbieranie obiektów JSON public JsonObjectRequest(int method, String url, JSONObject jsonrequest, Listener<JSONObject> listener, ErrorListener errorlistener) Map<String, String> jsonparams = new HashMap<>(); jsonparams.put("key1", "value1"); jsonparams.put("key2", "value2"); JSONObject postdata = new JSONObject(jsonParams); RequestQueue queue = Volley.newRequestQueue(this); String url = "[ADRES_URL]"; JsonObjectRequest postrequest = new JsonObjectRequest (Request.Method.POST, url, postdata, new Response.Listener<JSONObject>() { public void onresponse(jsonobject response) { // response zawiera odpowiedź w postaci obiektu JSON, new Response.ErrorListener() { public void onerrorresponse(volleyerror error) { // Błąd! ) { ; queue.add(postrequest);

29 Volley wysyłanie i odbieranie tablic obiektów JSON RequestQueue queue = Volley.newRequestQueue(this); String url = "[ADRES_URL]"; JsonArrayRequest postrequest = new JsonArrayRequest (Request.Method.POST, url, new Response.Listener<JSONArray>() { public void onresponse(jsonarray response) { // response zawiera odpowiedź w postaci listy obiektów JSON, new Response.ErrorListener() { public void onerrorresponse(volleyerror error) { // Błąd! ) { ; queue.add(postrequest);

30 Co zrobić z JSONem? Deserializacja Manualnie metody JSONArray i JSONObject getjsonobject(int i) pobiera i-ty element z tablicy JSON getjsonarray(string key) pobiera tablice o nazwie danej kluczem getdouble(string key) pobiera typ double o nazwie danej kluczem getboolean(string key) pobiera typ boolean o nazwie danej kluczem getint(string key) pobiera typ int o nazwie danej kluczem getstring(string key) pobiera typ String o nazwie danej kluczem Automatycznie google-gson automatyczna serializacja/deserializacja obiektów do formatu JSON app\build.gradle (biblioteka sama się pobierze i zainstaluje) dependencies { compile filetree(include: ['*.jar'], dir: 'libs') testcompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.mcxiaoke.volley:library:1.0.19' compile 'com.google.code.gson:gson:2.6.2'

31 GSON (de)serializacja obiektów JSON Model public class Teacher { public String name; public String surname; public List<String> classes; public int experiance; Deserializacja Obiekt typu JSONArray lub JSONObject Gson gson = new Gson(); String rawjson = response.tostring(); List<Teacher> teachers = gson.fromjson(rawjson, new TypeToken<List<Teacher>>(){.getType()); Teacher teacher = gson.fromjson(rawjson, Teacher.class); Problematyczne z niestrukturalnymi danymi! JSON: [{ "name": "Krzysztof", "surname": "Bzowski", "classes": ["Programowanie w JAVA", "Systemy Wbudowane", "Inżynieria internetu"], "experiance": 5, { "name": "Gorzegorz", "surname": "Smyk", "classes": ["Programowanie obiektowe"], "experiance": 5, { "name": "Mateusz", "surname": "Sitko", "classes": ["Podstawy programowania", "Modelowanie wieloskalowe"], "experiance": 5 ]

32 Po co wątki? Wszystkie metody uruchomione w Activity działają w ramach wątku GUI Czasochłonne metody (sieć, baza danych, obliczenia itd.) zablokują aplikację public void runbtn(view view) { final ProgressBar pb = (ProgressBar) findviewbyid(r.id.progressbar); for (int i = 0; i <= 100; i++) { timeconsumingwork(); pb.setprogress(i); private void timeconsumingwork() { try { Thread.sleep(100); catch (InterruptedException e) { e.printstacktrace(); ProgressBar

33 Sposób 1: Handler public void runbtn(view view) { final ProgressBar pb = (ProgressBar) findviewbyid(r.id.progressbar); Runnable runnable = new Runnable() { public void run() { for (int i = 0; i <= 100; i++) { final int value = i; timeconsumingwork(); pb.post(new Runnable() { public void run() { pb.setprogress(value); ); ; new Thread(runnable).start(); Czasochłonną operację umieszczamy w anonimowej klasie implementującej interfejs Runnable Progress raportujemy za pomocą metody post widoku ProgressBar do której również przesyłamy obiekt Runnable

34 Sposób 2: AsyncTask Klasa działająca asynchronicznie, musi dziedziczyć po AsyncTask<Params, Progress, Result> private class ProgressAsync extends AsyncTask<Void, Integer, Void> { private ProgressBar pb; public ProgressAsync(ProgressBar pb) { this.pb = pb; protected Void doinbackground(void... params) { for (int i = 0; i <= 100; i++) { timeconsumingwork(); publishprogress(i); return null; Miejsce na czasochłonne zadania protected void onprogressupdate(integer... values) { super.onprogressupdate(values); pb.setprogress(values[0]); AsyncTask pozwala na uruchomienie i nie czeka na zakończenie metody execute Miejsce na raportowanie postępu public void runbtn(view view) { ProgressBar pb = (ProgressBar) findviewbyid(r.id.progressbar); ProgressAsync pa = new ProgressAsync(pb); pa.execute();

35 Metody AsyncTask onpreexecute() uruchamiane z wątku GUI przed uruchomieniem doinbackground. Miejsce przygotowanie widoków np. pokazanie ProgressBar doinbackground(params...) uruchamiane w osobnym wątki zaraz po zakończeniu onpreexecute(). Miejsce na czasochłonne operacje. publishprogress(progress...) metoda służąca raportowaniu postępu wewnątrz doinbackground(). onprogressupdate(progress...), uruchamiane z wątku GUI samoczynnie po wykonaniu publishprogress(progress...). Miejsce na wizualizację postępu zadania, np. poprzez zmianę wartości widoku. onpostexecute(result), uruchamiane z wątku GUI po zakończeniu zadania. Jako parametr otrzymuje wynik działania doinbackground(). Miejsce na wyświetlenie podsumowania lub przekazanie sterowania dalej. onpostexecute onpreexecute doinbackground publishprogress onprogressupdate

36 To tyle Co warto poczytać: Navigation Drawer Niestandardowe widoki Powiadomienia Obsługa sensorów (żyroskop, akcelerometr i inne) Obsługa GPS Usługi działające w tle Cloud messaging powiadomienia PUSH Google API dostęp do Map, Kalendarza itp. Google Analytics (statystyki naszej aplikacji) Tworzenie gier: Umieszczenie aplikacji w Play Store

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych Systemy operacyjne na platformach mobilnych Wykład 3 Grzegorz Jabłoński, Piotr Perek Katedra Mikroelektroniki i Technik Informatycznych Zagadnienia wykładu Menu opcji ListActivity własny widok własny adapter

Bardziej szczegółowo

akademia androida Http i AsyncTask część VII

akademia androida Http i AsyncTask część VII akademia androida Http i AsyncTask część VII agenda 1. 2. 3. 4. URLConnection i HttpURLConnection UI Thread i ANR AsyncTask Zadanie 1. URLConnection i HttpURLConnection Jest to klasa, dzięki której możemy

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie w języku Java. Bazy danych SQLite w Javie Programowanie w języku Java Bazy danych SQLite w Javie Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android

Bardziej szczegółowo

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie RESTful Android Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie Jacek Laskowski jacek@japila.pl http://www.jaceklaskowski.pl wersja 1.0, 08.12.2011 O prelegencie - Jacek Laskowski

Bardziej szczegółowo

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Protokół JDBC współpraca z relacyjnymi bazami danych lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Zadanie1 Połączenie z bazą danych travel systemu bazodanowego Derby (metoda void

Bardziej szczegółowo

Programowanie urządzeń mobilnych. dr inż. Juliusz Mikoda

Programowanie urządzeń mobilnych. dr inż. Juliusz Mikoda Programowanie urządzeń mobilnych dr inż. Juliusz Mikoda Instalacja środowiska 1 Wymagane składniki środowiska Eclipse wersja 3.4 (Ganymede) lub 3.5 (Galileo classic) http://www.eclipse.org/downloads/packages/release/galileo/r

Bardziej szczegółowo

Szybciej (pisać) Łatwiej (czytać) Prościej (utrzymywać) Marcin Wąsowski Amsterdam Standard Sp. z o.o.

Szybciej (pisać) Łatwiej (czytać) Prościej (utrzymywać) Marcin Wąsowski Amsterdam Standard Sp. z o.o. Szybciej (pisać) Łatwiej (czytać) Prościej (utrzymywać) Marcin Wąsowski Amsterdam Standard Sp. z o.o. Co dostajemy na starcie? pobieranie elementów widoku, rzutowanie: ( np. findbyid ) każde zdarzenie

Bardziej szczegółowo

Tworzenie i wykorzystanie usług

Tworzenie i wykorzystanie usług Strona 1 Co to jest usługa w systemie Android? Usługi HTTP Obsługa wywołania HTTP GET Obsługa wywołania HTTP POST Obsługa wieloczęściowego wywołania HTTP POST Usługi lokalne Usługi zdalne Tworzenie usługi

Bardziej szczegółowo

AndroidManifest.xml. Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty.

AndroidManifest.xml. Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty. AndroidManifest.xml Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty. Jednym z najważniejszych elementów jest element który deklaruje kompatybilność z innymi

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Laboratorium Systemów Mobilnych. Wykład 1

Laboratorium Systemów Mobilnych. Wykład 1 Laboratorium Systemów Mobilnych 2015-02-27 Wykład 1 (Wstęp do programowania w systemie Android) Wojciech Wawrzyniak Zaliczenie wykładu i ćwiczeń Wykład omówienie zagadnień Ćwiczenie praktyczne zastosowanie

Bardziej szczegółowo

Fragmenty są wspierane od Androida 1.6

Fragmenty są wspierane od Androida 1.6 W androidzie można tworzyć dynamiczne interfejsy poprzez łączenie w moduły komponentów UI z aktywnościami. Moduły takie tworzy się za pomocą klasy Fragment, która zachowuje się jak zagnieżdżone aktywności

Bardziej szczegółowo

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody Programowanie urządzeń mobilnych dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody SharedPreferences Umożliwia przechowywanie małej ilości danych typów podstawowych Dane są przechowywane

Bardziej szczegółowo

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: 1. Listener dla przycisku. Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: W linii 24 tworzymy globalną metodę mglobal_onclicklistener,

Bardziej szczegółowo

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Protokół JDBC współpraca z relacyjnymi bazami danych lab3 Protokół JDBC współpraca z relacyjnymi bazami danych lab3 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych JPA, lab3 Zofia Kruczkiewicz 1 Zadanie1 Połączenie z bazą danych Sample systemu

Bardziej szczegółowo

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run(). Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2012 Plan wykładu Modele danych i bazy danych Modele danych Migracje Bazy danych w Railsach Rusztowania Walidacja modeli Modele danych Definicje

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody Programowanie urządzeń mobilnych dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody Rozmieszczenie przykład Jaki układu rozmieszczający powinien zostać wykorzystany? AbsoluteLayout, TableLayout,

Bardziej szczegółowo

Android poradnik programisty

Android poradnik programisty Android poradnik programisty 93 PRZEPISY TWORZENIA DOBRYCH APLIKACJI Wei-Meng Lee APN Promise SA Spis treści Wprowadzenie.......................................................... xi 1 Podstawy systemu

Bardziej szczegółowo

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o. Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o. 29.06.2015 2 Spis treści 1. Wymagania...4 2. Uprawnienia systemowe...4 3. Uprawnienie

Bardziej szczegółowo

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych Systemy operacyjne na platformach mobilnych Wykład 4 Grzegorz Jabłoński, Piotr Perek Katedra Mikroelektroniki i Technik Informatycznych Zagadnienia wykładu Menadżer połączeń Usługi HTTP Klient HTTP Żądanie

Bardziej szczegółowo

Automaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1, 13.05.2014

Automaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1, 13.05.2014 Automaty do zadań specjalnych Olga Maciaszek-Sharma, Artur Kotow Wersja 1, 13.05.2014 Agenda Kilka pytań do publiczności Po co się męczyć? Studium przypadku Olympus Wprowadzenie Opis rozwiązania Wnioski

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

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

DATA STORAGE. wprowadzenie Michał Mynarski. środa, 26 października 11

DATA STORAGE. wprowadzenie Michał Mynarski. środa, 26 października 11 DATA STORAGE wprowadzenie Michał Mynarski środa, 26 października 11 DZISIAJ OPOWIEMY O TYM, JAK PRZECHOWYWAĆ DANE Shared Preferences Internal Storage External Storage SQLite Datebases Network Connection

Bardziej szczegółowo

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

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

[Android] Podstawy programowania

[Android] Podstawy programowania Page 1 of 7 [Android] Podstawy programowania LinkiPrzewodnik z przykładamizasosbykrótka prezentacja wprowadzająca do budowy systemuprosta aplikacja z menu i dialogami, którą utworzymy tutaj krok po kroku

Bardziej szczegółowo

Android pierwsza aplikacja

Android pierwsza aplikacja Android pierwsza aplikacja I. Środowisko 1. Uruchomić środowisko Android Devloppers tools 2. Wybrać/Utworzyć Wokspace Mobile-cw2 II Projekt 1. Utworzyć nowy projekt klikając na w pasku narzędzi 2. Rozwinąć

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu

Bardziej szczegółowo

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2014 Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 38 Zasady Projekt Składowe projektu przynajmniej

Bardziej szczegółowo

Programowanie urządzeń mobilnych. projekt 6 ( )

Programowanie urządzeń mobilnych. projekt 6 ( ) Programowanie urządzeń mobilnych projekt 6 (05.01.2018) Usługi lokalizacyjne Jedną z powszechniejszych funkcjonalności wykorzystywanych przez liczne aplikacje przeznaczone dla urządzeń mobilnych jest możliwość

Bardziej szczegółowo

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System

Bardziej szczegółowo

Warsztaty v2 Layout y i widget y. Tomasz Wachowski Kamil Snopek Jan Romaniak

Warsztaty v2 Layout y i widget y. Tomasz Wachowski Kamil Snopek Jan Romaniak Warsztaty v2 Layout y i widget y Tomasz Wachowski Kamil Snopek Jan Romaniak Layouty w Androidzie Kamil Snopek Główne punkty prezentacji Main.xml Główny plik layout u Typy layout ów Linear Layout Table

Bardziej szczegółowo

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu. Wstęp Java Zadanie Celem laboratorium jest zapoznanie się z podstawami platformy oraz języka Java. W ramach zadania należy przygotować aplikację zarządzania notatkami użytkownika obsługiwaną z konsoli.

Bardziej szczegółowo

Programowanie w JAVA Lab. 5 - Wątki. 1. Wykorzystując metodę Monte Carlo narysować wykres funkcji oraz obliczyć całkę: 7 x ) xy, 8,8

Programowanie w JAVA Lab. 5 - Wątki. 1. Wykorzystując metodę Monte Carlo narysować wykres funkcji oraz obliczyć całkę: 7 x ) xy, 8,8 Programowanie w JAVA Lab. 5 - Wątki 1. Wykorzystując metodę Monte Carlo narysować wykres funkcji oraz obliczyć całkę: 33 y 3 2 2 x x 3 y 7 x 3 33 7) 2 2 f x, y 1 x 3 1 x 2 1 y 7 x 3 3 33 2 112 y 3 7 x

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Czym jest Spring Boot? Spring Boot jest szkieletem aplikacji, opiera się o Spring Framework czyli Framework szeroko

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

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

Mechanizm zapisu preferencji

Mechanizm zapisu preferencji Mechanizm zapisu preferencji Tłumaczenie i adaptacja materiałów: dr Tomasz Xięski. Na podstawie prezentacji udostępnionych przez Victor Matos, Cleveland State University. Portions of this page are reproduced

Bardziej szczegółowo

Jakarta POI. POIFS obsługa dokumentów OLE 2, HSSF dokumenty w formacie Excel'a, HWPF proste dokumenty w formacie Word 97,

Jakarta POI. POIFS obsługa dokumentów OLE 2, HSSF dokumenty w formacie Excel'a, HWPF proste dokumenty w formacie Word 97, 1 Jakarta POI Jakarta POI (http://jakarta.apache.org/poi/index.html) jest zbiorem narzędzi umożliwiającym prace z dokumentami zapisanymi w formatach wspieranych przez Microsoft. W skład POI wchodzą następujące

Bardziej szczegółowo

Java. Programowanie Obiektowe Mateusz Cicheński

Java. Programowanie Obiektowe Mateusz Cicheński Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja

Bardziej szczegółowo

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1) Instrukcja tworzenia aplikacji EE na podstawie aplikacji z dostępem do bazy danych, prezentowanej na zajęciach lab.5 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie

Bardziej szczegółowo

Laboratorium Systemów Mobilnych. Wykład 2

Laboratorium Systemów Mobilnych. Wykład 2 Laboratorium Systemów Mobilnych 2015-03-06 Wykład 2 (Aktywności proste zapamiętywanie danych) Wojciech Wawrzyniak Przypomnienie (elementy aplikacji) Składniki aplikacji Aktywności (Activity) Widoki (Views)

Bardziej szczegółowo

akademia androida Service, BroadcastReceiver, ContentProvider część IV

akademia androida Service, BroadcastReceiver, ContentProvider część IV akademia androida Service, BroadcastReceiver, ContentProvider część IV agenda 1. BroadcastReceiver 2. Service 3. ContentProvider 4. Zadanie 1. 5. Zadanie 2 (domowe). 1. BroadcastReceiver BroadcastReceiver

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet JSP ciąg dalszy Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić JSP tags, Używanie tagów, Custom tags, JSP objests, Obiekty

Bardziej szczegółowo

Obsługa SMS i telefonii

Obsługa SMS i telefonii Strona 1 Interfejsy API telefonii Wysyłanie wiadomości SMS Odbieranie wiadomości SMS Symulowanie nadchodzących wiadomości SMS Obsługa skrzynki wiadomości SMS Wysyłanie wiadomości e-mail Monitorowanie połączeń

Bardziej szczegółowo

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11 Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11 Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2 Czym jest ASP.NET

Bardziej szczegółowo

Katalog książek cz. 2

Katalog książek cz. 2 Katalog książek cz. 2 Odczytywanie danych z XML Do ćwiczenia dołączony jest plik books.xml zawierający pełen katalog książek. Poniższy listing zawiera przykładowy fragment danych w stosowanym formacie.

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Wykorzystanie map i geolokalizacji

Wykorzystanie map i geolokalizacji Strona 1 Usługi oparte na położeniu geograficznym Generowanie klucza interfejsu API dla mapy Wyświetlanie mapy Dodawanie własnych danych do mapy Położenie geograficzne Klasa Geocoder i geokodowanie Geokodowanie

Bardziej szczegółowo

METODY PROGRAMOWANIA

METODY PROGRAMOWANIA METODY PROGRAMOWANIA Wzorzec Repository 21 października 2017 Krzysztof Pawłowski kpawlowski@pjwstk.edu.pl Każdy wzorzec opisuje problem, który ciągle pojawia się w naszej dziedzinie, a następnie określa

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

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

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2 Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Narzędzia i środowiska programistyczne Laboratorium 1 Wprowadzenie Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 O Sobie Od 2014

Bardziej szczegółowo

Aplikacje RMI Lab4

Aplikacje RMI   Lab4 Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Wzorce prezentacji internetowych

Wzorce prezentacji internetowych Wzorce prezentacji internetowych 1. Model kontrolera widoku (Model View Controller). 2. Kontroler strony (Page Controller). 3. Kontroler fasady (Front Controller). 4. Szablon widoku (Template View). 5.

Bardziej szczegółowo

WSPÓŁBIEŻNOŚĆ. MATERIAŁY:

WSPÓŁBIEŻNOŚĆ. MATERIAŁY: WSPÓŁBIEŻNOŚĆ ZAGADNIENIA: procesy, wątki, synchronizacja, synchronizacja w Java 5.0 blokady, egzekutory, zbiory wątków MATERIAŁY: http://docs.oracle.com/javase/tutorial/essential/concurrency/ HTTP://USERS.UJ.EDU.PL/~CIESLA/

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: bazy danych, SQL, AJAX i JSON 1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji

Bardziej szczegółowo

Dawid Gierszewski Adam Hanasko

Dawid Gierszewski Adam Hanasko Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 1

MVC w praktyce tworzymy system artykułów. cz. 1 MVC w praktyce tworzymy system artykułów. cz. 1 Tworząc różnego rodzaju aplikacje natrafiamy na poważny problem utrzymania dobrej organizacji kodu przejrzystej oraz łatwej w rozbudowie. Z pomocą przychodzą

Bardziej szczegółowo

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada 2010 Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku. Aktywności to podstawowe elementy związane z platformą Android. Dzięki poznaniu aktywności będziesz w stanie napisać pierwszą aplikację przeznaczoną na urządzenie mobilne. Po dodaniu kontrolek możesz w

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

Kurs programowania. Wykład 9. Wojciech Macyna

Kurs programowania. Wykład 9. Wojciech Macyna Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy

Bardziej szczegółowo

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Przykład symulacji Paweł Daniluk Wydział Fizyki Jesień 2012 P. Daniluk (Wydział Fizyki) PO w. XII Jesień 2012 1 / 18 Symulacja sieci kolejowej A B C Zasady Na torze

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Aplikacja wielowątkowa prosty komunikator

Aplikacja wielowątkowa prosty komunikator Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host

Bardziej szczegółowo

prepared by: Programowanie WWW Servlety

prepared by: Programowanie WWW Servlety Programowanie WWW Servlety Przypomnienie problemu Aplikacja do liczenia kredytów Klasa Kredyt Formatka do wprowadzania danych (czysty HTML) Skrypt liczący ratę (JSP wykorzystujące klasę Kredyt) Klasa Kredyt

Bardziej szczegółowo

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody Programowanie urządzeń mobilnych dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody Wprowadzenie Android 1.0 (API level 1) - 2008 Android 1.5 Cupcake (API level 3) - 2009 Android 2.0

Bardziej szczegółowo

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

Bardziej szczegółowo

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Cel laboratorium 5 Należy wykonać dwie aplikacje zawierające warstwę integracji

Bardziej szczegółowo

Programowanie Obiektowe Ćwiczenie 4

Programowanie Obiektowe Ćwiczenie 4 Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Hibernate mapowanie baz danych

Hibernate mapowanie baz danych Hibernate mapowanie baz danych Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. ORM - Object-to-Relational Mapping. Jest odpowiedzią na znikomą ilość

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Maciej Zakrzewicz PLOUG mzakrz@cs.put.poznan.pl Plan prezentacji Wprowadzenie do architektury zorientowanej na usługi Charakterystyka technologii

Bardziej szczegółowo

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Zaawansowane Systemy Decyzyjne Laboratorium prowadzący: Andrzej Czajkowski 1 Dostęp do Bazy Danych. 1 Cel ćwiczenia. Celem ćwiczenia

Bardziej szczegółowo

Aplikacje w Javie- wykład 11 Wątki-podstawy

Aplikacje w Javie- wykład 11 Wątki-podstawy 1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/

Bardziej szczegółowo

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki 29 października 2014 Igor Wojnicki (AGH, KIS) CouchDB 29 października 2014 1 / 53 NoSQL Not Only SQL, CouchDB Apache CouchDB has started. Time to relax. Igor Wojnicki Katedra Informatyki Stosowanej, Akademia

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo