Podstawy obiektowości

Podobne dokumenty
Zadania z podstaw programowania obiektowego

Aplikacje w środowisku Java

Języki programowania imperatywnego

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Podstawy i języki programowania

Programowanie w języku Java

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Definiowanie własnych klas

Programowanie w języku Java

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

Rozdział 4 KLASY, OBIEKTY, METODY

Metody Metody, parametry, zwracanie wartości

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Wykład 4: Klasy i Metody

Programowanie 3 - Funkcje, pliki i klasy

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

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

Wybrane algorytmy tablicowe

Programowanie obiektowe - zadania

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Funkcje. Wprowadzenie. Mirosław Ochodek

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Egzamin z Podstaw informatyki i programowania 2007/2008

Projektowanie aplikacji internetowych laboratorium

Lab 9 Podstawy Programowania

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Mechanizm dziedziczenia

Biuro Podróży 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę

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

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

Biuro Podróży 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę

Zaawansowane aplikacje WWW - laboratorium

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Klasy i obiekty cz II

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wykład 8: Obsługa Wyjątków

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java:

Języki i techniki programowania Ćwiczenia 2

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

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Programowanie obiektowe zastosowanie języka Java SE

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Zajęcia 6 pliki tekstowe

Wykład 2: Podstawy Języka

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

11.6 Klasa do obsługi liczb wymiernych

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

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

Mechanizm dziedziczenia

Programowanie obiektowe

Dokumentacja do API Javy.

import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie komputerowe. Zajęcia 7

Programowanie obiektowe

Wykład 4. Klasa List Kolejki Stosy Słowniki

1. Język JAVA. 1. Pierwszy program. 2. Kalkulator. 3. Klasy. 4. Dziedziczenie

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

Wykład 6: Dziedziczenie

Wprowadzenie do języka Java

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

Aplikacje w środowisku Java

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie zaawansowane

KLASY, INTERFEJSY, ITP

Typy sparametryzowane

C-struktury wykład. Dorota Pylak

3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:

Programowanie obiektowe

Programowanie obiektowe i zdarzeniowe

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Programowanie obiektowe

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Programowanie obiektowe


Podstawy i języki programowania

Struktury Struktura polami struct struct struct struct

Programowanie obiektowe

Transkrypt:

Podstawy obiektowości Zad. Zamówienie 1. Napisać program do obsługi zamówień. Program powinien składać się z dwóch klas: Zamowienie oraz Pozycja, przy czym każde zamówienie zawierać może jedną lub więcej pozycji. Klasa Pozycja powinna zawierać następujące pola: nazwatowaru (String) ilesztuk (int) liczba zamówionych sztuk cena (double) cena pojedynczej sztuki oraz metody: konstruktor z parametrami umożliwiającymi ustalenie wartości pól klasy, metodę double obliczwartosc() zwracającą wartość pozycji zamówienia, metodę String tostring() zwracającą łańcuch w formacie: nazwa towaru (20 znaków), cena (10 znaków), liczba sztuk (4 znaki), wartość zamówienia (10 znaków), przykład: Cukier 4,00 zł 3 szt. 12,00 zł Klasa Zamowienie powinna zawierać następujące pola: pozycje (tablica obiektów kl. Pozycja) pozycje składowe zamówienia, iledodanych (int) liczba pozycji w zamówieniu, maksrozmiar (int) maksymalna liczba pozycji w zamówieniu oraz metody: konstruktor bezparametrowy maksrozmiar ustalany na wartość 10, konstruktor z parametrem określającym maksymalną liczbę pozycji w zamówieniu, metodę void dodajpozycje(pozycja p), która dodaje podaną pozycję do zamówienia, metodę double obliczwartosc() zwracającą wartość zamówienia, 19

metodę String tostring(), która zwraca łańcuch zawierający spis pozycji zamówienia oraz łączną wartość zamówienia. Przykładowa metoda korzystająca z wspomnianych klas: public static void main(string [] args) throws IOException { Pozycja p1 = new Pozycja("Chleb", 1, 3.5); System.out.println(p1); Pozycja p2 = new Pozycja("Cukier", 3, 4); System.out.print(p2); } Zamowienie z = new Zamowienie(20); z.dodajpozycje(p1); z.dodajpozycje(p2); System.out.println(z); Przykładowy wynik: Chleb 3,50 zł 1 szt. 3,50 zł Cukier 4,00 zł 3 szt. 12,00 zł Zamówienie: Chleb 3,50 zł 1 szt. 3,50 zł Cukier 4,00 zł 3 szt. 12,00 zł Razem: 15,50 zł 2. W klasie Zamowienie : zaimplementować metodę void usunpozycje(int indeks), która usuwa z zamówienia pozycję o podanym indeksie zaimplementować metodę void edytujpozycje(int indeks), która umożliwi edycję wybranej pozycji zamówienia, tj. nazwy towaru, ceny oraz liczby sztuk zmodyfikować metodę void dodajpozycje(pozycja p), tak by w stytuacji, gdy dodawany jest ten sam towar nie dodawała kolejnej pozycji, lecz zwiększała liczbę sztuk w już istniejącej 3. W klasie Pozycja : zaimplementować metodę double obliczwartosczrabatem, która oblicza wartość pozycji zamówienia po uwzględnieniu rabatu zależnego od liczby sztuk: 5 10 szt. rabat 5%, 20

10 20 szt. rabat 10 powyżej 20 szt. rabat 15%. 4. Zmodyfikować metodę obliczwartosc w klasie Zamowienie, tak by również wyświetlała informacje o rabacie i łączny koszt zamówienia po jego uwzględnieniu. 5. zmodyfikować metodę tostring, by wyświetlała również naliczony rabat i wartość z rabatem. 6. W obu klasach zaimplementować interfejs Serializable umożliwiający zapis i odczyt danych z pliku realizowany przez metody: Zad. Lista metodę public static void zapiszzamowienie(zamowienie z, String nazwapliku), która zapisze podane w parametrze zamówienie do pliku o nazwie podanej drugim parametrem. metodę public static Zamowienie wczytajzamowienie(string nazwapliku), która wczyta z pliku o podanej nazwie zamówienie i zwróci je jako wynik. Napisać klasę Lista, której zadaniem będzie przechowywanie listy liczb całkowitych. Klasa ta ma mieć następujące pola prywatne: int [] liczby; tablica, w której przechowywane będą liczby, int pojemnosc; maksymalna liczba elementów, możliwych do przechowywania, int rozmiar; aktualna liczba przechowywanych elementów. Klasa Lista powinna mieć również następujące metody: konstruktor z parametrem określającym pojemność, który przydziela pamięć dla tablicy liczby oraz ustala wartości pozostałych pól klasy; metodę dodajelement, która przyjmuje dokładnie jeden element liczbę całkowitą, która dodawana jest do listy; w przypadku, gdy lista jest pełna powinien zostać wyświetlony komunikat o błędzie; metodę znajdz, której jedynym parametrem powinna być szukana liczba, natomiast wynikiem pozycja podanej liczby w liście (licząc od 0) lub -1, gdy liczby nie ma na liście; bezparametrową metodę pisz, która wypisuje informacje o liście, w tym jej rozmiar, pojemność oraz listę przechowywanych elementów; metodę usunpierwszy, która usuwa pierwsze wystąpienie podanej jako parametr liczby, jeżeli znajduje się ona na liście, tzn. jeżeli podana liczba występuje więcej niż jeden raz, to usuwane jest jedynie pierwsze jej wystąpienie; 21

metodę usunpowtorzenia, która usuwa wszystkie powtórzenia elementów na liście, tzn. po jej wykonaniu na liście nie powinno być żadnych powtórzonych liczb; metodę odwroc, która odwraca kolejność elementów przechowywanych na liście; metodę zapiszdopliku, która zapisuje zawartość listy do pliku tekstowego, którego nazwa podana powinna być jako pierwszy parametr; Przykładowo, po wykonaniu poniższego fragmentu: final int N = 10; Lista l = new Lista(N); for (int i = 0; i < N/2; ++i) { l.dodajelement( (1 << i) ); } l.dodajelement(2); l.dodajelement(8); l.usunpierwszy(2); for (int i = 0; i < N/2; ++i) { l.dodajelement( (1 << i) ); } System.out.println("Po usunięciu powtórzeń:"); l.usunpowtorzenia(); Na ekranie powinno zostać wyświetlone: Pojemność: 10 Rozmiar: 7 Elementy: 1 2 4 8 16 2 8 Pojemność: 10 Rozmiar: 6 Elementy: 1 4 8 16 2 8 Nie można dodać więcej elementów, lista pełna! Pojemność: 10 Rozmiar: 10 Elementy: 1 4 8 16 2 8 1 2 4 8 Po usunięciu powtórzeń: 22

Pojemność: 10 Rozmiar: 5 Elementy: 16 1 2 4 8 Zad. Czas Napisać klasę Czas służącą do zapamiętania okresu czasu tj. liczby godzin i minut. Klasa ta powinna mieć dwa pola prywatne: int godz; int minuty; oraz metody publiczne: konstruktor z parametrami będącymi liczbą godzin i minut, konstruktor przyjmujący jako parametr łańcuch znaków na podstawie którego można ustalić wartość godzin i minut np. 12 h 58 min String tostring() której wynikiem jest łańcuch znaków opisujący dany okres czasu, np. 29 h 19 min Czas dodaj(czas t) której wynikiem jest nowy obiekt klasy Czas będący sumą bieżącego i podanego jako parametr obiektu Czas odejmij(czas t) analogicznie jak dodaj, tyle że odejmowanie, Czas pomnoz(int ile) wynikiem ma być okres czasu pomnożony podaną liczbę razy, static Czas sumuj(czas [] tab, int n) statyczna metoda klasy służąca do sumowania wszystkich okresów czasu podanych w tablicy będącej pierwszym parametrem Przykładowy program: Czas t1(10, 56); Czas t2(0, 123); System.out.println("t1 = " + t1); System.out.println("t2 = " + t2); System.out.println("t1 + t2 = " + t1.dodaj(t2)); System.out.println("t1 - t2 = " + t1.odejmij(t2); Czas [] tab = { t1, t2, t2 }; System.out.println("Czas.sumuj dla t1 + t2 + t2 = " + Czas.sumuj(tab, 3)); 23

System.out.println("t1 * 2 = " + t1.pomnoz(2)); Czas t3("3 h 17 min"); System.out.println("Konstruktor z łańcuchem: " + t3); Wydruk dla przykładowego programu: t1 = 10 h 56 min t2 = 2 h 3 min t1 + t2 = 12 h 59 min t1 - t2 = 8 h 53 min Czas.sumuj dla t1 + t2 + t2 = 15 h 2 min t1 * 2 = 21 h 52 min Konstruktor z łańcuchem: 3 h 17 min 24