JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie informacje przekazywane do obiektu to komunikaty. Komunikat można traktować również jako parametr wywołania wybranej metody. Klasa Klasa to prototyp obiektu. Podobnie jak zmienne są określonych typów tak obiekty są instancjami klas. Klasę można traktować jako swego rodzaju szablon obiektu/ów. Niektóre klasy są klasami abstrakcyjnymi, to jest takimi, które nie posiadają instancji, mają natomiast zastosowanie w dziedziczeniu klas. Klasy od nich pochodne mogą już posiadać instancje. W Javie klasa jest abstrakcyjna jeśli którakolwiek z jej metod nie ma implementacji. Definiowanie klasy public private abstract final extends Super implements Interfaces - klasa widoczna na zewnątrz. Tylko jedna klasa w pliku.java może być zdefiniowana jako publiczna - metoda lub zmienna do której możliwy jest dostęp dla danej klasy - klasa(metoda) niewidoczna na zewnątrz - klasa jest klasą abstrakcyjną - klasa nie może być dziedziczona - dla zmiennych zmienna nie zmieniająca wartości - dla parametrów zmienna przekazywana przez wartość (nie zmieniająca wartości po wyjściu z metody) - nazwa klasy, którą dziedziczy dana klasa - interfejs/y, który/e implementuje dana klasa Dziedziczenie (Inheritance) Funkcjonalność każda klasa (o ile nie jest to klasa final) może zostać rozszerzona poprzez zdefiniowanie dla niej klasy pochodnej. Klasa pochodna dziedziczy od klasy nadrzędnej wszystkie zmienne i metody a ponadto może sama definiować
(nadpisywać) metody klasy nadrzędnej i/lub zawierać własne metody i zmienne. Mechanizm dziedziczenia i hierarchii klas jest jednym z najbardziej istotnych elementów programowania obiektowego (np. MFC w C++). W Javie do zdefiniowania, że jakaś klasa jest pochodną od innej służy słowo kluczowe extends. Interfejs To zestaw poleceń i zachowań (w innych językach obiektowych zwany również protokołem), który rozszerza funkcjonalność klasy niezależnie od tego jakie jest jej miejsce w hierarchi dziedziczenia klas. Interfejsy definiuje się, wtedy gdy chce się aby pewne cechy zachowania (np. reakcja na ruch myszą) były niezależne od tego jakiego obiektu dotyczą. Wszystkie metody w interfejsie muszą być zdefiniowane jako abstrakcyjne. Przykład definicji klasy Etapy tworzenia nowego obiektu Deklaracja (Declaration) Przydział pamięci (Instantiation) Inicjalizacja (Initialization) Konstruktor Metoda/y o nazwie takiej jak klasa, wywoływana przy inicjalizacji obiektu danej klasy public class Rectangle { public int width = 0; public int height = 0; public Point origin; //Four constructors public Rectangle() { origin = new Point(0, 0); public Rectangle(Point p) { origin = p;
public Rectangle(int w, int h) { this(new Point(0, 0), w, h); public Rectangle(Point p, int w, int h) { origin = p; width = w; height = h; public void move(int x, int y) { origin.x = x; origin.y = y; public int area() { return width * height; Przykład hierarchi Klas package po_w1; public class SimpleClass { public static void main(string[] args) { Dodawanie d=new Dodawanie(); System.out.println(d.sumuj(3,5)); Mnozenie_dodawanie_i_dzielenie m=new Mnozenie_dodawanie_i_dzielenie(); System.out.println(m.mnoz(3,5)); System.out.println(m.sumuj(3,5)); System.out.println(m.dziel(5,3)); ; class Dodawanie{ public int sumuj(int a,int b){ return a+b; class Mnozenie_i_dodawanie extends Dodawanie{
public int mnoz(int a,int b){ return a*b; class Mnozenie_dodawanie_i_dzielenie extends Mnozenie_i_dodawanie{ public int dziel(int a,int b){ return a/b; UWAGA w przykładzie public int dziel(..), public int mnoz(..) i public int sumuj(..) to metody, każda metoda może mieć przekazywane parametry, może zwracać wartości a wykonywane w niej jest kod, pomiędzy { Konwencje programistyczne Pakiety z małych liter Pakiety w konwencji pl.edu.pwr.programowanie.lab4 com.net.super.program.pakiet1.podpakiet2 Nazwy klas rozpoczynamy Wielką literą. class Klasa{... Nazwy metod rozpoczynamy z małej litery. void metoda(){... Nazwy zmiennych rozpoczynamy z małej litery. int zmienna; Jeśli nazwa składa się z kilku wyrazów, to kolejne człony rozpoczynamy także z Wielkiej litery (notacja wielbłądzia ). Stałe (public static final) piszemy z samych dużych liter (można używać podłogi) Klasy a typy podstawowe Obiekt Podstawowy Symbol Size/Format Byte Byte 8-bit kod U2 Short Short 16-bit kod U2 Integer Int 32-bit kod U2 Long long l 64-bit kod U2 Float float f 32-bit IEEE 754 Double double d (opcja) 64-bit IEEE 754 Character '' Pojedynczy znak - 16- bit Unicode String -- "" Łańcuch tekstowy Boolean bool true lub false this
Słowo kluczowe używane w treści metody na oznaczenie obiektu, którego ta metoda jest częścią. super Słowo używane do oznaczenia zmiennej lub metody z klasy, z której dana klasa jest dziedziczona Instrukcja warunkowa: if ( wyrażenie ) instrukcja_1 ; else instrukcja_2 ; Instrukcja while Składnia instrukcji while jest następująca: Przykład Składnia pętli for while ( warunek ) instrukcja; // zliczanie do 10 int x = 0; while (x < 10) { System.out.printltn(""+x); x++; Składnia instrukcji for jest następująca: for (inicjalizacja; test; akcja ) instrukcja; Instrukcja inicjalizacja jest używana w celu zainicjalizowania stanu licznika lub innego przygotowania do wykonania pętli. Instrukcja test jest dowolnym wyrażeniem języka które jest obliczane przed każdym wykonaniem zawartości pętli. Jeśli wyrażenie test ma wartość true, wykonywane jest ciało pętli, po czym wykonywana
jest instrukcja akcja z nagłówka pętli (zwykle po prostu następuje inkrementacja zmiennej licznikowej). Przykład 1 Przykład 2 // dziesięć razy wpisuje napis "Hello" for (int i = 0; i < 10; i++) System.out.println("Hello! "); for (int i = 0; i < 10; i++) { System.out.println ("Hello!"); System.out.println ("wartoscia i jest:"+,i);