Języki i metody programowania Java INF302W Wykład 2 (część 1)

Podobne dokumenty
Podejście obiektowe. Tablice (1) obiektów

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Języki i metody programowania Java. Wykład 2 (część 2)

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Języki i metody programowania Java Lab2 podejście obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe

Java: interfejsy i klasy wewnętrzne

Programowanie w Internecie. Java

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Klasy abstrakcyjne, interfejsy i polimorfizm

Podstawy programowania obiektowego

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Programowanie obiektowe

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Wykład 2: Podstawy Języka

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Dokumentacja do API Javy.

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Programowanie obiektowe i zdarzeniowe

Comparable<Klasa_uzytkownika>

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wykład 4: Klasy i Metody

1 Atrybuty i metody klasowe

Definiowanie własnych klas

Wykład 5: Więcej o Klasach i Metodach

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie obiektowe

Programowanie obiektowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

PODSTAWOWE ELEMENTY JĘZYKA JAVA INSTRUKCJE 1. Pętle

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Programowanie i projektowanie obiektowe

Podstawy Języka Java

Przykład -

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Klasy abstrakcyjne i interfejsy

Aplikacja wielowątkowa prosty komunikator

Aplikacje RMI

Metody Metody, parametry, zwracanie wartości

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Aplikacje RMI Lab4

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Enkapsulacja, dziedziczenie, polimorfizm

Podstawy Programowania Obiektowego

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Java Język programowania

Szablony klas, zastosowanie szablonów w programach

Programowanie obiektowe

Aplikacja wielow tkowa prosty komunikator

Programowanie obiektowe

Projektowanie obiektowe. Roman Simiński Polimorfizm

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Aplikacje w środowisku Java

Języki i metody programowania Java INF302W Wykład 3 (część 2)

Tworzenie aplikacji w języku Java

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Multimedia JAVA. Historia

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 6: Dziedziczenie

Podstawy i języki programowania

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Algorytmy z powrotami. Algorytm minimax

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Technologie i usługi internetowe cz. 2

Programowanie obiektowe

Programowanie obiektowe zastosowanie języka Java SE

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

Dziedziczenie. dr Jarosław Skaruz

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Transkrypt:

Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1

Struktura wykładu 1. Identyfikacja złożonych danych reprezentowanych przez klasy powiązane dziedziczeniem i polimorfizmem podczas opracowania koncepcji programu obiektowego. Dziedziczenie (polimorfizm) przedefiniowanie metod, słowo kluczowe super, tablice z obiektowymi elementami, klasy usługowe (R-1, EL-1). 2. Identyfikacja złożonych danych opartych wspólności i zmienności cech podczas opracowania koncepcji programu obiektowego. Interfejsy i pakiety, implementacja interfejsów, klasy usługowe cd (1). Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 2

1. Tablice obiektów Tablica w Javie jest obiektem. Deklarowanie tablicy String [] nazwy; //równoważne deklaracje zmiennej tablicowej String nazwy []; // czyli referencji do obiektu tablicy, deklarujące elementy obiektowe int liczby[]; //zamienna tablicowa deklarująca elementy nieobiektowe Tworzenie obiektu tablicowego int liczby []= new int [10]; // utworzono tablicę 10 elementów typu int String nazwy []= new String[10]; // utworzono tablicę 10 referencji typu String, należy dla każdego elementu tablicy przydzielić pamięć Przydział pamięci na elementy obiektowe tablicy np. nazwy[0]= new String( Pewien wiersz ); //przydzielono pamięć na obiekt typu String w pierwszym elemencie tablicy (liczby[0]) Pobranie rozmiaru tablicy nazwy.length Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 3

Przykład 1 import java.lang.*; public class Tablice { public static void main(string args[]) { final int N=5; int liczby [] = new int [N]; for (int i=0; i<liczby.length; i++) { liczby[i]= i; System.out.println(liczby[i]); String nazwy[]=new String[N]; for (int i=0; i<nazwy.length; i++) { nazwy[i]=new String("lancuch "+i); System.out.println(nazwy[i]); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 4

2. Definicja elementu tablicy Przykład 2 import javax.swing.*; class Osoba1 { String nazwisko; float srednia; String uwagi; static int numer = 0; //element tablicy wykorzystany w kolejnych przykladach //atrybut klasowy, ktorego wartosc jest wykorzystana do //wyznaczania liczby obiektow typu Osoba1 public void Nadaj_dane(String []dane) { Inicjuj(); //wyznaczenie liczby tworzonych obiektów typu Osoba1 nazwisko=dane[0]; srednia= Float.parseFloat(dane[1]); uwagi=dane[2]; public String Podaj_dane() { String napis=""; napis+="\n Nazwisko: "+nazwisko; napis+="\n Średnia: "+srednia; napis+="\n Uwagi: "+uwagi; napis+="\n Liczba osób jest równa "+numer; return napis; public void Inicjuj() { numer++; Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 5

class GUI1{ public String[] Wstaw() { String S[]=new String[3]; S[0] = JOptionPane.showInputDialog(null, "Podaj nazwisko"); S[1] = JOptionPane.showInputDialog(null, "Podaj srednia"); S[2] =JOptionPane.showInputDialog(null, "Podaj uwagi"); return S; public void Wyswietl(String napis) { JOptionPane.showMessageDialog(null, napis); public class Cala { static public void main(string args[]) { Osoba1 os1 = new Osoba1(); GUI1 gui1= new GUI1(); os1.nadaj_dane(gui1.wstaw()); gui1.wyswietl(os1.podaj_dane()); System.exit(0); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 6

3. Tablica obiektów operacje wstawiania i wyświetlania Przykład 3 - import javax.swing.*; class Osoba1 {// kod klasy Osoba1 z przykładu 2 class GUI1 {//kod klasy GUI1 z przykladu 2 class Tablica { Osoba1 osoby[]=new Osoba1[N]; static int N = 2; int ile; public void Dodaj_osobe(String[] dane) { if (Pelna()) return; Osoba1 nowa = new Osoba1(); nowa.nadaj_dane(dane); ile++; osoby[ile - 1] = nowa; boolean Pelna() { return ile == N; //składowa do wyznaczania liczby elementów w tablicy //nie mozna wstawic wiecej niz 2 osoby do tablicy //dodanie obiektu typu Osoba1 do kolejnego elementu tablicy //wartosc wyrazenia true oznacza, ze tablica jest pelna Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 7

public String Podaj_dane_tablicy() { String dane_tablicy = ""; for (Osoba1 osoba : osoby) { //pętla działa na wszystkich elementach tablicy, czyli //równej osoby.length dane_tablicy += osoba.podaj_dane() + "\n"; //wykonanie wielowierszowego // łańcucha danych osób return dane_tablicy; public class Tablica_osob { Tablica tablica = new Tablica(); GUI1 gui1 = new GUI1(); static public void main(string args[]) { Tablica_osob ap = new Tablica_osob(); ap.tablica.dodaj_osobe(ap.gui1.wstaw()); ap.tablica.dodaj_osobe(ap.gui1.wstaw()); ap.gui1.wyswietl(ap.tablica.podaj_dane_tablicy()); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 8

Nie mozna dodac wiecej danych do tablicy Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 9

4. Tablica obiektów dodanie dziedziczenia, operacje wstawiania, wyświetlania i wyszukiwania Przykład 4 import javax.swing.joptionpane; class Osoba1 {//kod klasy Osoba1 z przykladu 2 class Osoba2 extends Osoba1{ // klasa Osoba2 posiada metodę sprawdzającą nazwisko public boolean Porownaj_nazwisko(String dana) { return nazwisko.equals(dana); class GUI1 {//kod klasy GUI1 z przykladu 2 class GUI2 extends GUI1{ //klasa GUI2 posiada metode do wprowadzania nazwiska z klawiatury public String Podaj_nazwisko() { return JOptionPane.showInputDialog(null, "Podaj nazwisko"); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 10

class Tablica { Osoba2 osoby[] = new Osoba2[N]; static int N = 2; int ile; //modyfikacja typu elementów tablicy public void Dodaj_osobe(String[] dane) { if (Pelna()) return; Osoba2 nowa = new Osoba2(); nowa.nadaj_dane(dane); ile++; osoby[ile - 1] = nowa; boolean Pelna() { return ile == N; public String Podaj_dane_tablicy() { String dane_tablicy = ""; for (Osoba2 osoba : osoby) { dane_tablicy += osoba.podaj_dane() + "\n"; return dane_tablicy; Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 11

class Tablica1 extends Tablica{ //klass Tablica1 posiada metode do wyszukania obiektu typu //Osoba2 public String Szukaj(String nazwisko) { for (Osoba2 osoba : osoby) if (osoba.porownaj_nazwisko(nazwisko)) return osoba.podaj_dane(); return "Brak osoby"; Dane wstawiono takie same jak w przykładzie 2 public class Tablica_osob_szukanie { Tablica1 tablica1 = new Tablica1(); GUI2 gui2 = new GUI2(); static public void main(string args[]) { Tablica_osob_szukanie ap = new Tablica_osob_szukanie(); ap.tablica1.dodaj_osobe(ap.gui2.wstaw()); ap.tablica1.dodaj_osobe(ap.gui2.wstaw()); ap.gui2.wyswietl(ap.tablica1.podaj_dane_tablicy()); String wynik=ap.tablica1.szukaj(ap.gui2.podaj_nazwisko()); ap.gui2.wyswietl(wynik); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 12

5. Tablica obiektów wybór wstawiania, wyświetlania i wyszukiwania. Wykorzystanie typu abstrakcyjnego Tablica w celu uniezależnienia klas korzystających z tej klasy od implementacji metod: Dodaj_osobe oraz Powieksz_tablice w klasach pochodnych. Przykład 5 class Osoba2 {// kod klasy Osoba2 z przykładu 4 class GUI2 {//kod klasy GUI2 z przykladu 4 abstract class Tablica { Osoba2 osoby[] = new Osoba2[N]; static int N = 2; int ile; public abstract void Dodaj_osobe(String[] dane); public abstract void Powieksz_tablice(); boolean Pelna() { return ile == N; public String Podaj_dane_tablicy() { String dane_tablicy = ""; for (int i=0;i<ile;i++) //przy dowolnej teraz zawartosci tablicy nalezy odwołać sie //tylko do tylu elementów, ile wstawiono do tablicy dane_tablicy += osoby[i].podaj_dane() + "\n"; return dane_tablicy; Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 13

public String Szukaj(String nazwisko) { for (int i=0;i<ile;i++) //przy dowolnej teraz zawartosci tablicy nalezy odwolac sie //tylko do tylu elementów, ile wstawiono do tablicy if (osoby[i].porownaj_nazwisko(nazwisko)) return osoby[i].podaj_dane(); return "Brak osoby"; class Tablica1 extends Tablica{ @Override public void Dodaj_osobe(String[] dane) { if (Pelna()) return; Osoba2 nowa = new Osoba2(); nowa.nadaj_dane(dane); ile++; osoby[ile - 1] = nowa; @Override public void Powieksz_tablice() { Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 14

class Tablica_osob_menu_ {//Klasa ta jest niezalezna od implementacji klasy Tablica Tablica tablica; GUI2 gui2; public Tablica_osob_menu_(Tablica tablica_, GUI2 gui_) { tablica=tablica_; gui2=gui_; public void menu() { String s; char ch; do { s = JOptionPane.showInputDialog(null, "Podaj wybor" + "\n1 - Podaj dane kolejnej osoby," + "\n2 - Wyswietl dane osob" + "\n3 - Wyszukaj osobe i wyswietl jej dane" + "\nk - Koniec programu"); ch = s.charat(0); switch (ch) { case '1': tablica.dodaj_osobe(gui2.wstaw()); case '2': gui2.wyswietl(tablica.podaj_dane_tablicy()); case '3': String wynik = tablica.szukaj(gui2.podaj_nazwisko()); break; break; gui2.wyswietl(wynik); break; case 'k': JOptionPane.showMessageDialog(null, "Koniec programu"); break; default: JOptionPane.showMessageDialog(null, "Zla opcja"); break; while (ch!= 'k'); System.exit(0); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 15

public class Tablica_osob_menu { public static void main(string args[]) { Tablica_osob_menu_ tab=new Tablica_osob_menu_(new Tablica1(), new GUI2()); tab.menu(); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 16

6. Tablica obiektów wybór wstawiania, wyświetlania i wyszukiwania, zmiana rozmiarów tablicy przykład wieloużywalności kodu klasy Tablica_osob_menu_, niezależnej od implementacji klasy Tablica Przykład 6 class Osoba2 {// kod klasy Osoba2 z przykładu 4 class GUI2 {//kod klasy GUI2 z przykładu 4 abstract class Tablica{ //kod klasy Tablica z przykładu 5 //wieloużywalna klasa niezależna od kodu klas implementujących klasę Tablica class Tablica_osob_menu_ {//kod klasy Tablica_osob_menu z przykładu 5 Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 17

class Tablica2 extends Tablica{ // nowa implementacja klasy Tablica @Override public void Dodaj_osobe(String[] dane) { if (Pelna()) Powieksz_tablice(); Osoba2 nowa = new Osoba2(); nowa.nadaj_dane(dane); ile++; osoby[ile - 1] = nowa; @Override public void Powieksz_tablice() { Osoba2 osobypom[]=new Osoba2[ile+N]; //tworzenie nowej lokalnej tablicy o rozmiarze ile +N int i=0; for (Osoba2 pom:osoby) //kopiowanie elementów z tablicy-atrybutu do nowej tablicy lokalnej osobypom[i++]=pom; osoby=osobypom; //tablica lokalna jest przypisana do tablicy atrybutu obiektu, //zawartosc tablicy atrybutu jest niedostepna i ulegnie usunieciu z pamieci //a jej zawartosc jest zastapiona zawartoscia tablicy lokalnej public class Tablica_osob_menu1 { public static void main(string args[]) { Tablica_osob_menu_ tab=new Tablica_osob_menu_(new Tablica2(), new GUI2()); tab.menu(); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 18

Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 19