Zajęcia 1. Programowanie zaawansowane

Temat: Tworzenie klas i obiektów. Dziedziczenie

Zad. 1 - Zapoznanie ze środowiskiem pracy, tryb konsolowy

Uruchom konsolę - Start->Uruchom->cmd. W nowym katalogu zapisz w pliku poniższy program, który wypisze komunikat powitalny: Hej:

import java.io.*;

class hej

{

public static void main(String args[])

{

System.out.println("Hej");

}

}

Skompiluj program za pomocą polecenia:

javac hej.java

i uruchom program za pomocą:

java hej

Zad.1.a. Napisz program, który wypisze Twoje imię i nazwisko na środku ekranu.

Zad.1.b. J.w. ale otoczone gwiazdkami.

Zad.2 - Praca z prostymi obiektami. To zadanie ilustruje kompozycję, czyli wykorzystanie jednego obiektu w innym.

Napisz program, który wprowadzi i wypisze podstawowe dane o wczytanej osobie.

Co potrzebne z teorii: budowa klasy: właściwości, metody, konstruktory, tworzenie obiektów, wywoływanie metod.

import java.io.*;

class osoba

{

String nazwisko;

int wiek;

float brutto;

osoba (String nazwisko, int wiek, float brutto)

{

this.nazwisko=nazwisko;

this.wiek=wiek;

this.brutto=brutto;

}

void wypisz()

{

System.out.println(nazwisko+wiek+brutto);

}

}

public class ludzie

{

public static String czytaj_wiersz()

{

byte [] cbuf=new byte[50];

String x=new String("");

try

{ /* proba czytania */

int m= System.in.read( cbuf) ;

for (int j=0;j<m;j=j+1)

if ((char)cbuf[j]!='\r' && (char)cbuf[j]!='\n')

x=x+(char)cbuf[j];

}

catch (IOException e) {} ;

return x;

};

public static void main(String args[])

{

System.out.println("Podaj nazwisko");

String nazwisko=czytaj_wiersz();

System.out.println("Podaj wiek");

int wiek=Integer.valueOf(czytaj_wiersz()).intValue();

System.out.println("Podaj brutto");

float brutto=new Float(czytaj_wiersz()).floatValue();

osoba x=new osoba(nazwisko, wiek, brutto);

x.wypisz();

}

}

Zad.2a. Popraw interfejs programu

Zad.2b. Wczytaj dane dwu osób i wypisz tej, która jest starsza

Zad.3. Praca z prostymi obiektami.

Napisz program, który umożliwi wprowadzenie wybranych danych dla studenta w dziekanacie.

To zadanie ilustruje dziedziczenie (Uwaga: konstruktory nie są dziedziczone). Uwaga na metody wypisz() i wypisz1().

import java.io.*;

class ludzie

{

String nazwisko;

int wiek;

ludzie()

{

this.nazwisko="";

this.wiek=-1;

}

ludzie(String nazwisko, int wiek)

{

this.nazwisko=nazwisko;

this.wiek=wiek;

}

void wypisz()

{

//kod samodzielnie

System.out.println("dane ????");

}

void wypisz1()

{

//kod samodzielnie

System.out.println("dane $$$$$");

}

}

class student extends ludzie

{

String kierunek;

int rok;

student()

{

super();

this.kierunek="";

this.rok=-1;

}

student(String nazwisko, int wiek, String kierunek, int rok)

{

super(nazwisko,wiek);

this.kierunek=kierunek;

this.rok=rok;

}

void wypisz()

{

//kod samodzielnie

System.out.println("dane *****");

}

}

class dziekanat

{

public static void main(String args[])

{

student a=new student("Abacki",20,"informatyka",3);

student b=new student();

System.out.println(a.nazwisko+a.wiek+a.kierunek+a.rok);

System.out.println();

System.out.println(b.nazwisko+b.wiek+b.kierunek+b.rok);

a.wypisz();

a.wypisz1();

}

}

Zad.3a. do klasy ludzie dodaj adres, a do klasy student oceny z programowania, baz danych i grafiki. Dodaj także metodę obliczania średniej. Wprowadź dane z klawiatury i policz średnią.

Zad. 4. Tablice obiektów. Napisz program, który umożliwia wprowadzenie informacji o nazwisku i wieku dla kilku osób.

class osoba

{

String nazwisko;

int wiek;

osoba()

{

this.nazwisko="";

this.wiek=-1;

}

osoba(String nazwisko, int wiek)

{

this.nazwisko=nazwisko;

this.wiek=wiek;

}

void wypisz()

{

System.out.println(nazwisko+wiek);

}

}

class tablice

{

public static void main(String args[])

{

osoba [] a=new osoba[10];

a[0]=new osoba("Abacki", 12);

a[1]=new osoba("Babacki",13);

for (int i=0;i<2;i++)

System.out.println(a[i].nazwisko+a[i].wiek);

}

}

Zad. 4a. Dana jest lista studentów (nazwisko, rok, oceny z grafiki, programwania, baz, sieci.. Napisz program, który umożliwi wprowadzenie danych, znajdzie studenta o największej średniej, wypisze studentów mających średnią powyżej średniej, najlepszych z programownaia.