1.08k likes | 1.25k Views
Podstawowe aspekty programowania w Javie. Michał Kuciapski m.kuciapski@univ.gda.pl. Kwestie organizacyjne. Cel przedmiotu.
E N D
Podstawowe aspekty programowania w Javie Michał Kuciapski m.kuciapski@univ.gda.pl
Cel przedmiotu Celem przedmiotu jest ukazanie podstawowych elementów składni języka programowania Java wraz z wykazaniem praktycznego ich zastosowania w tworzeniu aplikacji konsolowych, na podstawie rozbudowanego przykładu przy wsparciu ze strony technik analizy i projektowania obiektowego.
Ocena • Egzamin – 70 % • Ocena z ćwiczeń – 30 % • Dodatkowe punkty za aktywność • Zwolnienia dla osób z oceną z ćwiczeń • 4,5 i 5
Literatura • Eckel B, Thinking in Java, 3rd Edition Revision 4.0 , Prentice-Hall, New Jersey 2002; http://www.pythoncriticalmass.com/ • Dokumentacja producenta języka JAVA; http://java.sun.com/docs/ • Kurs dotyczący języka Java firmowany przez CISCO Networking Academy oraz firmę SUNhttp://java.sun.com/docs/books/tutorial/index.html
Typy języków programowania • Język maszynowy - kod maszynowy pisany binarnie lub szesnastkowo. • Asemblery - języki programowania tzw. niskiego poziomu. Każda instrukcja asemblera odpowiada jednej instrukcji procesora w kodzie maszynowym (w przeciwieństwie do języków wysokiego poziomu). Przykład: Asembler. • Imperatywne - program składa się ze zmiennych oraz modyfikujących je operacji, z jawnie określonym przepływem sterowania. Typowe języki tego typu to C, Pascal. • Obiektowe - program składa się z "obiektów" - elementów łączących stan (czyli dane) i zachowanie (metody). Obiektowy program komputerowy jest zbiorem obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Typowe języki: Simula, Smalltalk, C++, Perl, Java, Ada, Python, Delphi, VB.
Podstawowe informacje o języku Java Historia i istota języka Java
Najważniejsze etapy historia Javy • 1980: pojawienie się koncepcji programowania obiektowego (ang. object-oriented programming (OOP )) • 1990: Bill Joy w raporcie „Further” sugeruje SUNowi stworzenie środowiska obiektowego na bazie C++ • 1991: projekt „Green”. Powstaje język *7 / OAK (Object Application Kernel) firmowany przez Jamesa Goslinga. Przeznaczenie – elektronika powszechnego użytku (Przenośność! Niezależność od różnych procesorów!) • 1995: zmiana nazwy na Java
Najważniejsze etapy historia Javy • 1996: w przeglądarce Netscape zaimplementowano obsługę JAVA w wersji 1.0; SUN propaguje darmowe środowisko JDK 1.0 • 1999: JAVA 2, zastosowania biznesowe • 1999 – stałe rozwijanie języka przez firmę Sun
Dlaczego Java • Szerokie zastosowanie • Elastyczność w zakresie obsługiwanego sprzętu • Wsparcie ze strony profesjonalnych narzędzi • Możliwość ponownego wykorzystania raz stworzonego kodu • Uproszczenie szeregu mechanizmów oraz zwiększenie poziomu bezpieczeństwa w stosunku C++ • Moda
Zastosowania Javy • Kartyinteligentne i elektronika • Systemy zarządzania bazami danych • Obsługamultimediów • Internet - rozproszone, wielowarstwowe aplikacje - J2EE (Java 2 Enterprise Edition) , aplety • Grafika 3D • Technologie mobilne • Kryptografia
Języki kompilowane a interpretowalne • Języki kompilowane: • Cały kod źródłowy aplikacji jest kompilowany do pliku wykonalnego (.exe, .com) • Kompilacja polega na transformacji kodu źródłowego w plik „zrozumiały” dla konkretnej platformy programowo-sprzętowej • Program nie będzie działał w innych środowiskach • Kompilacja jest procesem wykonywanym jednokrotnie • Plik wykonywalny zostanie stworzony tylko i wyłącznie wtedy, gdy nie wystąpią żadne błędy składniowe
Języki kompilowane a interpretowalne • Języki interpretowalne: • Nie występuje plik wykonywalny dostosowany do konkretnej platformy - tzw. Beta-kod, • Kolejne linie kodu są na bieżąco odczytywane z pliku źródłowego i wykonywane • Kontrola składni wykonywana jest dopiero w momencie wywołania kolejnych linii kodu • Języki tego typu są z natury wolniejsze
Platforma Javy Program w Javie Wirtualna Maszyna Javy Java API System komputerowy
Architektura Kod źródłowy Java (.java) Biblioteka klas Javy Ładowacz Klas Weryfikator kodu Kod bajtowy Java Przesyłany jest lokalnie lub poprzez sieć Kompilator Wirtualna Maszyna Javy Kompilator kodu „w locie” Interpretator Java Kod bajtowy Java (.class) System wykonywania System operacyjny Sprzęt
Środowisko tworzenia aplikacji • JVM (Java Virtual Machine) • + Java API (Application Programming Interfaces) • = JRE (Java Runtime Engine) • + narzędzia kompilacji • + biblioteki • = Java SDK (Software Development Kit)
Podstawowe narzędzia • javac – prekompilator • java – interpretator beta-kodu • javaw – j. w., bez konsoli • javadoc – generator dokumentacji • appletviewer – interpretator appletów • jar – narzędzie do zarządzania archiwami • jdb – debugger • Narzędzia domyślnie znajdują się w katalogu c:\java2sdk\bin
Procedura tworzenia programu • Napisanie kodu źródłowego i zapisanie go w pliku NazwaKlasy.java • Nazwa pliku powinna być identyczna z nazwą klasy • Prekompilacja do beta-kodu: • javac NazwaKlasy.java • Uruchomienie programu • java NazwaKlasy
Procedura tworzenia programu • UWAGI: • Java jest językiem case-sensitive • Uważamy, aby w momencie użycia narzędzia javac podać rozszerzenie, a z kolei przy zastosowaniu interpretera java je pominąć • Początkowo najlepiej korzystać z katalogu bin do zapisywania programów • Na późniejszym etapie definiujemy w ustawieniach systemu zmienne środowiskowe: • CLASSPATH – katalog w którym znajdują się klasy • PATH – katalog w którym znajdują się narzędzia
Podstawowe informacje o języku Java Konstruowanie kodu w języku Java
Typy elementy programowania Javy • Strukturalne • Obiektowe • Zdarzeniowe • Współbieżne
Struktura programu • PrzykladowaKlasa.java • class PrzykładowaKlasa { • … • } • UWAGI: • Musi istnieć zgodność pomiędzy nazwą wywołanego pliku a nazwą klasy • Nazwy klas powinny zawierać rzeczowniki (np.: Student, PobieranieDanych), rzeczowniki i przymiotniki (np. WykładowcaAkademicki), aby jednoznacznie wyrażać typy tworzonych obiektów. Nie powinny zawierać one czasowników (np. DodajeStudentów)
Zasady konstrukcji kodu • Tworzenie czytelnego kodu jest jego organizacja w bloki, które są wyróżniane poprzez wcięcia • instrukcja_grupująca { • … • … • … • } • Stosowanie pewnej nadmiarowości • int a = (c*2) + (b/3); • zamiast • int a=c*2+b/3;
Zasady konstrukcji kodu • Wykorzystywanie komentarzy • Komentarz liniowy • // taka linia kodu zostanie pominięta przez interpretator • Komentarz blokowy • /* • tu jest • kilka • linii • które są ignorowane • */
Zasady konstrukcji kodu • Komentarz dokumentacyjny • /** • niby • podobnie, a jednak • inaczej • */ • Często komentarz dokumentacyjny jest umieszczany na samym początku programu, i zawiera specjalne słowa kluczowe: • @author tu imię i nazwisko autora • @version tu wersja aplikacji • @see tu ewentualne odwołania do źródeł
Zasady konstrukcji kodu • Umieszczając komentarze pamiętajmy, że są one interpretowane jako spacja. • double pi = 3.14/*kto to spamięta*/56; • Konsekwencja • int[] n; • int n[]; • Nazewnictwo
Przykładowy program • /** • @author Michał Kuciapski • @version 0.1 • */ • public class Powitanie { // po uruchomieniu na ekran // wyskoczy Witaj serdecznie! • public static void main(String[] args) { • System.out.println(”Witaj serdecznie!”); • } • }
Podstawowe informacje o języku Java Podstawowe informacje o obiektowości Javy
Paradygmat obiektowości • Opanowywanie złożoności dziedziny problemu opiera się na zasadach: • rozróżnianie poszczególnych obiektów • tworzenie pojęć - łączenie obiektów w klasy • znajdowanie zależności między pojęciami - klasami, wyprowadzanie nowych • określanie relacji między obiektami, agregacja, kojarzenie
Na czym polega obiektowość Javy • Obiekty i atrybuty • Klasy i rozróżnianie między nimi • Zależności między pojęciami – dziedziczenie, agregacja, kojarzenie • Hermetyzacja • Komunikacja przy pomocy komunikatów
Na czym polega obiektowość Javy – obiekty i atrybuty Obiekt – abstrakcja czegoś w dziedzinie problemu Abstrakcja - ignorowanie tych aspektów (cech, właściwości) przedmiotu, które nie są istotne z punktu widzenia bieżącego celu, a koncentrowanie się na aspektach właściwych Obiekt = (identyfikacja) + stan + zachowanie
Na czym polega obiektowość Javy – klasy Klasa – abstrakcja grupy obiektów o podobnej charakterystyce Klasa = wspólne własności + wspólne zachowania
Na czym polega obiektowość Javy – zależności Dziedziczenie – wyrażanie podobieństwa między klasami przy pomocy hierarchii uszczegóławiania i uogólniania Agregacja – wyróżnianie obiektów „całości” i ich „składowych” Kojarzenie – wiązanie obiektów na podstawie ich cech (atrybutów)
Na czym polega obiektowość Javy – hermetyzajca Hermetyzacja – ukrywanie informacji o składowych systemu tak, aby zamykały one w sobie możliwie jedną decyzję projektową
Na czym polega obiektowość Javy – przykład Elementy obiektowe w przykładowej aplikacji do zarządzania informacjami o studentach i nauczycielach mającej następujące funkcjonalności: 1. Dodanie osoby (nauczyciel/student) 2. Usunięcie osoby (nauczyciel/student) 3. Wyszukanie i wyświetlenie danych osoby (nauczyciel/student) 4. Modyfikacja danych osoby (nauczyciel/student) 5. Wyświetlenie listy osób (nauczyciel/student) 6. Zapisanie danych 7. Wczytanie danych 8. Wyjście z aplikacji
Na czym polega obiektowość Javy – przykład Obiekty i atrybuty: nauczycielMK.imie = ”Michał”; studentAP.nazwisko = ”Borski”; PobieranieDanych tym = new PobieranieDanych(); tym.imie = br.readLine(); this.pracuje = true
Na czym polega obiektowość Javy – przykład Klasy i rozróżnianie pomiędzy nimi: public class OperacjePlikowe { … … … } public class PobieranieDanych { … … … }
Na czym polega obiektowość Javy – przykład Zależności – dziedziczenie: public abstract class Osoba { … … … } class Nauczyciel extends Osoba { … … … }
Na czym polega obiektowość Javy – przykład Zależności - komunikacja za pomocą komunikatów : class Nauczyciel extends Osoba { … public Nauczyciel dodaj() throws IOException { … PobieranieDanych tym = new PobieranieDanych(); tym.dodajNauczyciel(); … } … }
Składnia języka Java „Elementy strukturalne”
Elementy leksykalne • Komentarze • Identyfikatory • Słowa kluczowe • Separatory • Przykład
Komentarze • Trzy typy: • Jednoliniowe - // - np. //wczytanie linii tekstu z pliku • Blokowe - /* */ - np. /* wczytanie linii tekstu z pliku • skonwertowanie na liczbę */ • Dokumentacyjne - /** */ - np. • /** • Write a description of class j here. • @author (your name) • @version (a version number or a date) • */
Słowa kluczowe • Słowa kluczowe są identyfikatorami o specjalnym znaczeniu dla języka (kompilatora) Java. • Poszukiwane przez kompilator w czasie kompilacji. • Zarezerwowane dla języka i nie mogą być używane w konstrukcji nazw własnych identyfikatorów.
Słowa kluczowe - lista • abstract – deklaruje klasę lub metodę jako abstrakcyjną • boolean – deklaruje zmienną lub wartość zwracaną jako wartość logiczną • break – przerwanie • byte – deklaruje zmienną lub wartość zwracaną jako wartość byte • case – określa opcję w instrukcji wyboru switch • catch – obsługuje wyjątek • char – deklaruje zmienną lub wartość zwracaną jako wartość znaku • class – oznacza początek definicji klasy • const – definiuje stałą (nieużywane) • continue – przerywa pętlę rozpoczynając jej kolejny cykl