Monika Wrzosek (IM UG) Programowanie obiektowe 21 / 25

Podobne dokumenty
Klasy abstrakcyjne i interfejsy

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

Programowanie obiektowe - zadania

Programowanie obiektowe

Programowanie obiektowe

TEMAT : KLASY DZIEDZICZENIE

Język Java część 2 (przykładowa aplikacja)

Dziedziczenie. Zadanie 1

Programowanie strukturalne i obiektowe. Funkcje

Mechanizm dziedziczenia

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Wstęp do programowania

Język Java część 2 (przykładowa aplikacja)

Wyjątki (exceptions)

Warsztaty dla nauczycieli

Podstawy Programowania

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Układ równań liniowych

Algorytm. a programowanie -

Programowanie - wykład 4

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

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

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

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Programowanie obiektowe

Dziedziczenie i interfejsy

Programowanie obiektowe i zdarzeniowe

ALGORYTMY I STRUKTURY DANYCH

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

Projektowanie aplikacji internetowych laboratorium

Mechanizm dziedziczenia

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

Zadanie 2: Arytmetyka symboli

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Technologie i usługi internetowe cz. 2

Programowanie obiektowe

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

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

4. Funkcje. Przykłady

I. Podstawy języka C powtórka

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Pętla for. Wynik działania programu:

Zadanie nr 2: Arytmetyka liczb zespolonych

Pomorski Czarodziej 2016 Zadania. Kategoria C

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Laboratorium z Podstaw Programowania Zajęcia 1

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Powtórka algorytmów. Wprowadzenie do języka Java.

Polimorfizm. dr Jarosław Skaruz

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Podstawy Kompilatorów

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Wstęp do Programowania, laboratorium 02

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Podstawy i języki programowania

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Klasy abstrakcyjne, interfejsy i polimorfizm

Aplikacje w środowisku Java

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

1 Dziedziczenie. 1.1 Koncepcja dziedziczenia. Ćwiczenie 3

LISTA 5. C++ PETLE for, while, do while

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Programowanie - instrukcje sterujące

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe

Język programowania PASCAL

Rekurencja (rekursja)

Macierze - obliczanie wyznacznika macierzy z użyciem permutacji

Programowanie obiektowe

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Projektowanie obiektowe. Roman Simiński Polimorfizm

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

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

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

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

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

PROLOG INNE PRZYKŁADY MACIEJ KELM

1. Wypisywanie danych

Laboratorium 1 - Programowanie proceduralne i obiektowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Podstawy Kompilatorów

Języki i techniki programowania Ćwiczenia 4 Wzorce

4. Napisz program wyznaczający wartość funkcji. f (x) = x cos x + e 4x 7. w zadanym punkcie.

Matematyk Roku gminny konkurs matematyczny. FINAŁ 19 maja 2017 KLASA TRZECIA

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Algorytm. Algorytmy Marek Pudełko

Zad. 5: Układ równań liniowych liczb zespolonych

Transkrypt:

Klasy abstrakcyjne Zad.23. Możemy powiedzieć, że rozwiązanie standardowego zadania matematycznego składa się z trzech części: wprowadzenia danych, znalezienia rozwiązania i wypisania wyników (w tej kolejności). Przykładowa klasa opisująca zadanie może więc wyglądać: p u b l i c c l a s s Zadanie { v o i d wprowadzdane ( ) { // d e f i n i c j a metody 1 v o i d z n a j d z R o z w i a z a n i e ( ) { // d e f i n i c j a metody 2 v o i d w y p i s z W y n i k i ( ) { // d e f i n i c j a metody 3 v o i d r o z w i a z ( ) { // d e f i n i c j a metody 4 wprowadzdane ( ) ; //wywo ł a n i e metody 1 z n a j d z R o z w i a z a n i e ( ) ; //wywo ł a n i e metody 2 w y p i s z W y n i k i ( ) ; //wywo ł a n i e metody 3 Metody wprowadzdane, znajdzrozwiazanie, wypiszwyniki mają puste implementacje, ponieważ na tym etapie (jeszcze bez znajomości samego zadania) nie jesteśmy w stanie podać, jakie dane należy wprowadzić, jakiej metody użyć, aby otrzymać rozwiązanie, ani też jakie dane wyjściowe będą wypisywane. Nazwy tych metod muszą się jednak pojawić, ponieważ są one wykorzystywane w zwykłej (nieabstrakcyjnej) metodzie rozwiaz. Dzięki metodzie rozwiaz użytkownik nie musi pamiętać trzech nazw metod, ani kolejności w jakiej należy je wywoływać. Monika Wrzosek (IM UG) Programowanie obiektowe 21 / 25

Klasa Zadanie mogłaby być z powodzeniem klasą abstrakcyjną: p u b l i c a b s t r a c t c l a s s Zadanie { a b s t r a c t v o i d wprowadzdane ( ) ; a b s t r a c t v o i d z n a j d z R o z w i a z a n i e ( ) ; a b s t r a c t v o i d w y p i s z W y n i k i ( ) ; v o i d r o z w i a z ( ) { wprowadzdane ( ) ; z n a j d z R o z w i a z a n i e ( ) ; w y p i s z W y n i k i ( ) ; Wpisz kod abstrakcyjnej klasy Zadanie do pliku Zadanie.java. W pliku Main.java umieść poniższy kod i spróbuj go skompilować. Zadanie z = new Zadanie ( ) ; Wyjaśnij efekt tej kompilacji. Monika Wrzosek (IM UG) Programowanie obiektowe 22 / 25

W jaki sposób zatem wykorzystywać metody i klasy abstrakcyjne? Należy zdefiniować klasę potomną, która uzupełni definicje metod abstrakcyjnych klasy Zadanie, np: i m p o r t j a v a. u t i l. Random ; p u b l i c c l a s s UkladRownan e x t e n d s Zadanie { // ax + by = e // cx + dy = f i n t a, b, c, d, e, f ; f l o a t x, y ; S t r i n g s ; v o i d wprowadzdane ( ) { Random r = new Random ( ) ; a = r. n e x t I n t ( 9 ) + 1 ; b = r. n e x t I n t ( 9 ) + 1 ; e = r. n e x t I n t ( 9 ) + 1 ; c = r. n e x t I n t ( 9 ) + 1 ; d = r. n e x t I n t ( 9 ) + 1 ; f = r. n e x t I n t ( 9 ) + 1 ; System. out. p r i n t l n ( a + " x + " + b + " y = " + e ) ; System. out. p r i n t l n ( c + " x + " + d + " y = " + f ) ; v o i d z n a j d z R o z w i a z a n i e ( ) { f l o a t W = a d b c ; f l o a t Wx = e d b f ; f l o a t Wy = a f e c ; i f (W!= 0) { x = Wx / W; y = Wy / W; e l s e s = " Brak l u b n i e s k o n c z e n i e w i e l e r o z w i a z a n " ; v o i d wypiszwyniki ( ) { i f ( s!= n u l l ) System. out. p r i n t l n ( s ) ; e l s e System. out. p r i n t l n ( " x = " + x + ", y = " + y ) ; Monika Wrzosek (IM UG) Programowanie obiektowe 23 / 25

Przetestuj klasę Zadanie i UkladRownan w klasie Main: UkladRownan u = new UkladRownan ( ) ; u. r o z w i a z ( ) ; W tym samym projekcie utwórz klasę o nazwie SymbolNewtona dziedziczącą po klasie Zadanie. Celem klasy SymbolNewtona jest obliczenie symbolu Newtona według wzoru: ( ) n = k n! k!(n k)! dla danych wejściowych n i k, takich że 0 k n. Do klasy SymbolNewtona możesz dodać dodatkową metodę obliczającą silnię przekazanej w parametrze liczby naturalnej: l o n g s i l n i a ( i n t p ) { // t r e s c metody Monika Wrzosek (IM UG) Programowanie obiektowe 24 / 25

Zad.24. Zdefiniuj klasę bazową Liczba, w której znajdą się metody abstrakcyjne wczytaj - nadająca wartość (np. losową) liczbie, wyswietl - wyświetlająca liczbę obliczkwadrat - obliczająca kwadrat liczby. Utwórz klasy Rzeczywista i Zespolona dziedziczące po klasie Liczba. Do klas pochodnych wprowadź odpowiednie pola reprezentujące wartości tych liczb. Przetestuj napisany kod w klasie Main, np: R z e c z y w i s t a r = new R z e c z y w i s t a ( ) ; Z e s p o l o n a z = new Z e s p o l o n a ( ) ; L i c z b a l i c z ; l i c z = r ; l i c z. w c z y t a j ( ) ; l i c z. w y s w i e t l ( ) ; l i c z. o b l i c z K w a d r a t ( ) ; l i c z = z ; l i c z. w c z y t a j ( ) ; l i c z. w y s w i e t l ( ) ; l i c z. o b l i c z K w a d r a t ( ) ; Monika Wrzosek (IM UG) Programowanie obiektowe 25 / 25