Programowanie 2 - Ćwiczenia 3


Poprzednie Następne
Temat: Java cd. Wstęp do programowania obiektowego.

Pętla for

pętla wykonująca się od a równego 0 do 9.
for (deklaracja zmiennej; warunek_logiczny; instrukcja_wykonywana_przy_kazdym_przejsciu) {
/* instrukcje wykonywane zawsze gdy wartunek logiczny jest prawdziwy */
}



public class Petla1 {

/**
* @param args
*/
public static void main(String[] args) {
for (int a=0; a<10; a++) {
System.out.println(a);
}
}
}


switch

Wykonanie części programu w zależności od wartości wyrażenia.
switch ( wyrażenie)
{
case Wartosć1 :
/* ... */
break;
case Wartosć2 :
/* ... */
break;
default :
/* ... */
break;
}



Przykładowy program:
public class ProgramSwitch {

/**
* @param args
*/
public static void main(String[] args) {
int b= 1;

switch (b) {
case 0: System.out.println("wartosc 0");
break;
case 1: System.out.println("wartosc 1");
break;
default: System.out.println("wartosc inna niz 0 i 1");
break;
}
}
}


Zadanie 2.3

Napisz program odczytujący liczbę całkowitoliczbową oznaczającą rok urodzenia, a następnie obliczającą ile dana osoba ma lat(zakładając iż urodziła się 1 stycznia podanego roku), wypisującą tę wartość. Następnie program powinien wypisać wszystkie lata do bieżącego roku.

np. gdy podamy: 1999

to program powinien zwrócić wartość:
Masz 10 lat
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010



Podstawowe definicje

Na wcześniejszych zajęciachużywaliśmy klas jedynie w celu zdefiniowania metody main(). Jednak zastosowanie klas jest zdecydowanie szersze w programowaniu obiektowym.

Programowanie obiektowe (wikipedia) (object-oriented programming) — paradygmat programowania, w którym programy definiuje się za pomocą obiektów — elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań.

Obiekt

Obiekt to podstawowe pojęcie wchodzące w skład paradygmatu programowania obiektowego w analizie i projektowaniu oprogramowania oraz w programowaniu.

Jest to struktura zawierająca:

    * dane
    * metody, czyli funkcje służące do wykonywania na tych danych określonych zadań.

Z reguły obiekty (a właściwie klasy, do których te obiekty należą) są konstruowane tak, aby dane przez nie przenoszone były dostępne wyłącznie przez odpowiednie metody, co zabezpiecza je przed niechcianymi modyfikacjami. Takie zamknięcie danych nazywa się enkapsulacją czyli jakby zamknięcie ich w kapsule.

Każdy obiekt ma trzy cechy:

    * tożsamość, czyli cechę umożliwiającą jego identyfikację i odróżnienie od innych obiektów;
    * stan, czyli aktualny stan danych składowych;
    * zachowanie (ang. behaviour), czyli zestaw metod wykonujących operacje na tych danych.

Klasa

W programowaniu obiektowym klasa jest częściową lub całkowitą definicją dla obiektów. Definicja obejmuje dopuszczalny stan obiektów oraz ich zachowania. Obiekt, który został stworzony na podstawie danej klasy nazywany jest jej instancją. Klasy mogą być typami języka programowania - przykładowo, instancja klasy Owoc będzie mieć typ Owoc. Klasy posiadają zarówno interfejs, jak i strukturę. Interfejs opisuje, jak komunikować się z jej instancjami za pośrednictwem metod, zaś struktura definiuje sposób mapowania stanu obiektu na elementarne atrybuty.

Zależnie od implementacji, klasy mogą istnieć w programie tylko na etapie jego kompilacji, w wyniku której są tłumaczone na kod strukturalny lub też posiadać swoją reprezentację w kodzie wynikowym w postaci metaobiektów. Za ich pomocą program może odczytywać i manipulować informacjami o klasie podczas wykonywania.

Utworzenie pierwszej klasy


// Klasa o nazwie Kolo. Bedzie reprezentowac figure geometryczna pozwalajaca 
// na wykonaniu podstawowych operacji takich jak obliczenie pola i obwodu
public class Kolo {

// pola (wlasciwosci)
public double x;
public double y;
public double promien;

public Kolo(double d, double e, double f) {
this.x = d;
this.y = e;
this.promien = f;
}

// operacje (metody)
public double obliczPole() {
return ((3.14 * 3.14) * promien);
}

public double obliczObwod() {
return (6.28 * promien);
}

public void opiszSie() {
String napis = "Kolo";
napis += " (x: " + x;
napis += ", y: " + y;
napis += ", promien: " + promien;
napis += " pole: " + obliczPole();
napis += " obwod: " + obliczObwod();
System.out.println("-------------- ");
System.out.println(napis);
System.out.println("-------------- ");
}

public static void main(String[] args) {
// utworzenie obiektu o nazwie kolo1
Kolo kolo1 = new Kolo(10.0, 20.0, 5.0);

// utworzenie obiektu o nazwie kolo2
Kolo kolo2 = new Kolo(5.0, 1.0, 2.0);
System.out.println("KOLO1: ");
kolo1.opiszSie();

System.out.println("KOLO2: ");
kolo2.opiszSie();
}
}

Definicja - struktura kodu


// Klasa o nazwie Kolo. Bedzie reprezentowac figure geometryczna pozwalajaca 
// na wykonaniu podstawowych operacji takich jak obliczenie pola i obwodu
public class <nazwa_klasy> {
// pola (wlasciwosci)
...

// KONSTRUKTOR np.
public <nazwa_klasy> (double d, double e, double f) {
this.x = d;
this.y = e;
this.promien = f;
}


// METODY np.
public double obliczPole() {
return ((3.14 * 3.14) * promien);
}
...

< OPCJONALNY KOD - tylko gdy chcemy rozpocząć działanie programu w bieżącej klasie
public static void main(String[] args) {
// utworzenie obiektu o nazwie kolo1
Kolo kolo1 = new Kolo(10.0, 20.0, 5.0);

// utworzenie obiektu o nazwie kolo2
Kolo kolo2 = new Kolo(5.0, 1.0, 2.0);
System.out.println("KOLO1: ");
kolo1.opiszSie();

System.out.println("KOLO2: ");
kolo2.opiszSie();
}
}
Zadanie 3.0
Utwórz klasę o nazwie "MojProgram" i  przenies do niej metodę main. Sprawdź czy program będzie działać.

Zadanie 3.1
Dodaj metodę o nazwie czyPunktWKole powinna ona zwracać wartość typu logicznego "true" gdy podany punkt (o współrzędnych przekazanych do metody) należy do koła. W przeciwnym przypadku powinien zwrócić wartość "false".