Jędrzej Jajor Marcin Zienkowicz

Slides:



Advertisements
Podobne prezentacje
Programowanie w Java.
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Programowanie obiektowe
Java dla studentów II roku Wydziału Fizyki PW Przemysław Duda, 2012
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe Andrzej Ziółkowski Wykład 3.
Klasy i obiekty.
Wzorce.
Tworzenie i obsługa programów – przykład 3 uwagi cd. Wykorzystując różne klasy biblioteki języka Java należy pamiętać w jakim pakiecie się znajdują. Wszystkie.
Programowanie Obiektowe w Javie (c.d.)
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
Podstawy języka Java Nguyen Hung Son Uniwersytet Warszawski.
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
WPROWADZENIE DO JĘZYKA JAVA
Tablice.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Java – programowanie obiektowe
dr Anna Kwiatkowska Instytut Informatyki
Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
Dr Anna Kwiatkowska JAVA dr Anna Kwiatkowska
Język Java Wielowątkowość.
Podstawy C# Grupa .NET PO.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Tadeusz Ziębakowski Zachodniopomorski Uniwersytet Technologiczny.
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
JAVA – wstęp.
Tworzenie aplikacji mobilnych
Instalacja i narzędzia. Beta-kod i maszyna wirtualna
Programowanie obiektowe III rok EiT
Java – wprowadzenie, typy danych, operatory
Programowanie obiektowe – zastosowanie języka Java SE
JAVA.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
JAVA.
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Java 3 MPDI Programowanie obiektowe W5. Java - obiektowy język programowania stworzony przez firmę Sun Microsystems. Java jest językiem tworzenia programów.
Programowanie obiektowe 2013/2014
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
Programowanie sieciowe w Javie
Programowanie w języku C++
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 2 ( ) Klasy i obiekty.
Dziedziczenie Wykład 7 Dziedziczenie sekwencyjne
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
Programowanie Obiektowe – Wykład 6
Wątki, programowanie współbieżne
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Podstawy programowania
Założenia projektowe Javy
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

Jędrzej Jajor Marcin Zienkowicz Java – wprowadzenie Jędrzej Jajor Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Historia Javy Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie 1990 – Bill Joy „Further” J. Gosling, P. Naughton, M. Sheridan - Sun Microsystems 1991 – projekt Green -> OAK -> Java Podobieństwo do języka C++ Cele: przenośność, łatwość tworzenia aplikacji sieciowych, usunięcie wad C++ Początkowo: embedded systems Nazwa w slangu amerykańskim: kawa 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Cechy Javy Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Obiektowość Interfejsy Przenośne oprogramowanie Byte-code Garbage collector Aplikacja vs. applet 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Java2 SDK Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Świat a model Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Żaba płeć gatunek kumkaj() rechotaj() skacz() class Zaba { char plec; String gatunek; void kumkaj(); void rechotaj(); void skacz(); } 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Klasa a obiekt Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Królewicz żabus pięknus mężczyzna Kermit żabus pospolitus mężczyzna Monika żabus leniuchus kobieta Zaba Monika = new Zaba(”żabus leniuchus”, k); Zaba Krolewicz = new Zaba(”żabus pięknus”, m); Zaba Kermit = new Zaba(”żabus pospolitus”, m); 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Dziedziczenie Płaz płeć gatunek skacz() Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Żaba pływaj() kumkaj() Jaszczurka idź() odrzućOgon() Ropucha jad rechotaj() wydzielJad() 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Dziedziczenie cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie class Plaz { char plec; String gatunek; void skacz(); } class Zaba extends Plaz { void plywaj(); void kumkaj(); class Jaszczurka extends Plaz { void idz(); void odrzucOgon(); } class Ropucha extends Plaz { String jad; void rechotaj(); void wydzielJad(); 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Dziedziczenie cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Wszystkie klasy dziedziczą z java.lang.Object Java wspiera tylko jednokrotne dziedziczenie Dziedziczenie wielokrotne może być częściowo zrealizowane dzięki interfejsom Metody domyślnie są wirtualne (tzn. wykorzystują polimorfizm) 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Hermetyzacja Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Private(-), protected(#), public(+), default Płaz -Płeć #Gatunek +Skacz() class Plaz { private char plec; protected String gatunek; public void skacz(); } class Zaba extends Plaz { public void plywaj(); public void kumkaj(); Żaba +Pływaj() +Kumkaj() 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Abstrakcja Słowo kluczowe abstract oznacza, że dana jednostka (klasa, metoda) fizycznie nie istnieje klasy abstrakcyjne nie mogą mieć obiektów metody abstrakcyjne nie posiadają implementacji Klasa z metodą abstrakcyjną musi także być zadeklarowana jako abstrakcyjna Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie abstract public class Figura {} abstract public void narysuj(); 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Polimorfizm Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie wielopostaciowość wiele klas reprezentuje ten sam typ 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Polimorfizm cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie void Metoda(Plaz x) { ... } Zaba Monika; Jaszczurka Konrad; Plaz Zwierzak; Metoda(Monika); Metoda(Konrad); ... Zwierzak = Monika; Zwierzak.skacz(); Zwierzak = Konrad; 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Interfejsy Deklaracje metod i definicje stałych Dany interfejs mogą implementować różne klasy Dana klasa może implementować wiele różnych interfejsów Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie interface Wytresowany { final int Wiek = 5; void dajGlos(); void przynies(); } class Zaba extends Plaz implements Wytresowany {... } class Pies extends Ssak 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Interfejsy cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie interface Wytresowany {...} interface Jadowity {...} class Ropucha extends Plaz implements Wytresowany, Jadowity {...} ... Ropucha zabus; Jadowity zwierz1; Wytresowany zwierz2; zwierz1 = zabus; zwierz2 = zabus; 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Cechy Javy Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Obiektowość Interfejsy Przenośne oprogramowanie Byte-code Garbage collector Aplikacja vs. Applet 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Środowisko Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie JDK (Java Development Kit) i JRE (Java Runtime Environment) – http://java.sun.com JVM (Java Virtual Machine), JIT (Just-In-Time) Środowiska graficzne, np. Eclipse, JBuilder javac - generator bajtkodu dla wirtualnej maszyny Javy java – interpreter bajtkodu 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Programowanie Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Konstruktory Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie służą do tworzenia instancji klas (przydział pamięci i inicjalizacja pól) nazwa konstruktora == nazwa klasy nie zwracają typu mogą być przeciążane Jeżeli w klasie nie zdefiniowano wprost żadnego konstruktora, kompilator generuje domyślny konstruktor bezparametrowy public class MojaKlasa { public MojaKlasa { // jestem w konstruktorze } 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Przykład konstruktora Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie public class Okrag { public static final double PI = 3.14159; // stała public double r; // promień okręgu public Okrag(double r) { this.r = r; } public Okrag() { this(1.0); public double obwod() { return 2 * PI * r; } public double pole() { return PI * r*r; } 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Zarządzanie pamięcią Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie w Javie nie ma destruktorów obiekty, do których nie ma referencji, są usuwane automatycznie przez specjalny wątek JVM: garbage collector 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Typy prymitywne Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie W Javie wszystko jest obiektem, ale... bezpośrednio przechowują pojedynczą wartość dane są przechowywane na stosie są manipulowane za pomocą wbudowanych operatorów nie mogą być rozszerzane przez programistę byte, short, int, long, float, double, char, boolean posiadają odpowiedniki obiektowe (Byte, Short, Integer etc.) int i = 1; double pi = 3.1415; boolean isOpen = true; 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Typy obiektowe Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie przechowują referencję do faktycznego obiektu dane są przechowywane na stercie są manipulowane za pomocą metod i odwołań do pól mogą być swobodnie tworzone i rozszerzane przez programistów MojaKlasa klasa = null; klasa = new MojaKlasa(); klasa.wykonaj(parametr1, parametr2); 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Zasięg Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Tak jak w C/C++, zasięg zmiennej jest określony przez rozmieszczenie nawiasów klamrowych {}. Zmienna zdefiniowana w danym zasięgu jest dostępna tylko do końca tego zasięgu { int x = 12; /* tylko x jest dostępne */ int q = 96; /* x i q są dostępne */ } /* tylko x dostępne */ /* q jest poza zasięgiem */ { int x = 12; int x = 96; /* błąd */ } 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Liczby Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Liczby są reprezentowane przez typy prymitywne o różnej dokładności byte, short, int, long float, double Na liczbach prymitywnych działają operatory znane z C/C++ (+-/*=%^) Do reprezentacji bardzo dużych liczb służy klasa BigDecimal (zawarta w JDK) 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Napisy Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Napisy są zawsze zapisywane w Unicode Klasy reprezentujące napisy java.lang.String – operator ‘+’ java.lang.StringBuffer Napisy są obejmowane w podwójne cudzysłowy, pojedyncze znaki – w pojedyncze Popularne metody: substr(i, j), indexOf(ch), charAt(n) String napis = „Mój” + „napis”; String slowo = napis.substr(0, 3); 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Tablice Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Tablice są obiektami specjalnego typu Indeksy są liczone od 0 i są sprawdzane Bardzo ważne pseudopole length tablice różnych typów są od siebie różne int mojaTablica[ ] = null; mojaTablica = new int[5]; int mojaTablica2[ ] = {1, 4, 9, 16, 25}; String jezyki [ ] = {"Prolog", "Java"}; 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Wskaźnik a referencja Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie W Javie nie występują wskaźniki takie jak w C/C++ Wszystkie obiekty są dostępne wyłącznie przez referencje Referencje to wskaźnik bez możliwości wykonywania na nim obliczeń Adres wskazywany przez referencję odnosi się do sterty i nie może być modyfikowany MojaKlasa klasa = null; MojaKlasa klasa2 = new MojaKlasa(); 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Stałe Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Stałą jest zmienna ze słowem final Wartość stałej jest ustalana przy pierwszym przypisaniu Próba ponownego przypisania wartości jest wykrywana przez kompilator Tradycyjnie stałe zapisuje się wielkimi literami final double PI = 3.1415; final String KLUCZ = „klucz”; 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Pakiety Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Rozszerzenie przestrzeni nazw Lepsze zarządzanie programem wielomodułowym Pakiety ściśle związane z katalogami // plik Zaba.java package jjmz.zwierz; public class Zaba {...} // plik Zoo.java import jjmz.zwierz.Zaba; import jjmz.zwierz.Pies; // lub import jjmz.zwierz.*; public class Zoo {...} // plik Pies.java package jjmz.zwierz; public class Pies {...} 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Pakiety cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie c:\ KlasyJavy jjmz zwierz Zaba.class Pies.class import jjmz.zwierz.Zaba; import jjmz.zwierz.Pies; // lub import jjmz.zwierz.*; Zmienna CLASSPATH set CLASSPATH=c:\KlasyJavy;c:\jdk\lib;. 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Pakiety wbudowane Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Biblioteka klas dostarczana wraz z JDK java.util.* - dynamiczne struktury danych java.util.zip.* – obsługa plików ZIP java.text.* - przetwarzanie tekstów java.io.* - wsparcie operacji we/wy java.net.* - komponenty sieciowe javax.swing.* - komponenty graficzne ... 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz JAR-y Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Gotowe, spakowane komponenty Ułatwienie rozprowadzania dodatkowych pakietów Dołączenie do CLASSPATH CLASSPATH=c:\KlasyJavy\zwierz.jar JAR a ZIP 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz HelloWorld Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie package moj.pakiet; import inny.pakiet.PewnaKlasa; import jeszcze.inny.pakiet.*; public class HelloWorld { public static void main (String[] args) { System.out.println(“Hello World!!!”); } 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz HelloWorld cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie C:\> javac HelloWorld.java C:\> java HelloWorld Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld C:\> echo %CLASSPATH% C:\JavaSoft\JRE\1.3.1\lib\ext\QTJava.zip C:\> set classpath=%classpath%;. C:\> java HelloWorld Hello World!!! 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz HelloWorld cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Pakowanie do JAR jar cvf Hello.jar HelloWorld.class Dodawanie do CLASSPATH set classpath=c:\KlasyJavy\Hello.jar Uruchomienie java HelloWorld lub java –jar Hello.jar 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Java a C++ Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie nie ma typedef (są klasy), nie ma preprocesora (np. #define (są stałe)), nie ma plików nagłówkowych (kompilator generuje z plików źródłowych pliki binarne z niezbędnymi informacjami), nie ma struktur i unii (są klasy), nie ma funkcji (są metody), nie ma wielodziedziczenia klas (jest wielodziedziczenie interfejsów), nie ma instrukcji goto (choć słowo goto jest zastrzeżone), nie ma przeciążania operatorów (ale jest dociążanie metod), nie ma niejawnych przekształceń (koercji) typów (można je zapisywać jawnie), nie ma wskaźników (są klasy, zmienne których wartościami sa obiekty albo null, tablice, obiekty reprezentujące napisy), nie ma delete (jest automatyczne odśmiecanie). 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz HelloWorldApplet import java.applet.Applet; import java.awt.Graphics; /** * Applet testowy, plik: HelloWorldApplet.java * @author JJ&MZ */ public class HelloWorldApplet extends Applet { /** Wywoływana domyślnie przy odświeżaniu ekranu public void paint(Graphics theGraphics) { theGraphics.drawString(“Hello World !!!”, 0, 50); } Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz HelloWorldApplet cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie <!– HelloWorldApplet.html --> <html> <head><title>Testowy applet</title></head> <body> <h1>Test appletów</h1> <applet code=“HelloWorldApplet.class” width=“200” height=“100”> </applet> </body> </html> 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz HelloWorldApplet cd. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie C:\> javac HelloWorldApplet.java C:\> appletviewer HelloWorldApplet.html 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Narzędzia Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie javadoc – automatyczna generacja dokumentacji appletviewer – przeglądarka appletów javap – dekompilacja klas Javy (*.class -> *.java) ... 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz     Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie niezależność od platformy dzięki JVM prawie czysta implementacja paradygmatu obiektowego usunięcie pojęcia wskaźnika odzyskiwanie „nieużytków” weryfikacja kodu w fazie kompilacji i wykonania dynamiczne ładowanie klas 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz     Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie brak możliwości przeciążenia operatorów brak klas parametryzowanych (templates) 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Podsumowanie Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie Java to nie tylko applety Java Servlet/JSP - tworzenie aplikacji webowych Java JDBC - aplikacje bazodanowe Java Swing - aplikacje okienkowe Java RMI - aplikacje rozproszone Java Enterprise Edition - aplikacje biznesowe (odpowiednik .NET) ... 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Jędrzej Jajor & Marcin Zienkowicz Źródła informacji Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie java.sun.com/j2se/1.4 www.javasoft.com/j2se/1.4/docs www.javasoft.com/docs/books/tutorial www.BruceEckel.com - Thinking in Java, Thinking in Patterns xml.apache.org jakarta.apache.org www.jug.poznan.pl ... 10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz

Dziękujemy