Andrzej Repak Nr albumu

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Funkcje w PHP ABK.
Wstęp do strumieni danych
C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
Programowanie obiektowe
Mgr inż.Marcin Borkowski Podstawy Java Część II
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Programowanie obiektowe
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Static, const, volatile.
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Struktury.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Języki programowania obiektowego
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Java – programowanie obiektowe
dr Anna Kwiatkowska Instytut Informatyki
Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Podstawy programowania
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Programowanie obiektowe III rok EiT
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Programowanie obiektowe – zastosowanie języka Java SE
JAVA.
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe 2013/2014
Kurs języka C++ – wykład 3 ( )
Projektowanie stron WWW
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 2 ( ) Klasy i obiekty.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Dziedziczenie Wykład 7 Dziedziczenie sekwencyjne
Wykład 4 Klasa Vec, której konstruktory alokują pamięć dla obiektów 1.Przykład definicji klasy Vec 2.Definicje konstruktorów i destruktora 3.Definicja.
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Typy wyliczeniowe, kolekcje
Kurs języka C++ – wykład 3 ( )
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Wskaźniki Elżbieta Labocha.
Programowanie obiektowe – zastosowanie języka Java SE
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Andrzej Repak Nr albumu 132805 KLASY METODY POLA Andrzej Repak Nr albumu 132805

JAVY ciąg dalszy.. Przypomnienie definicji klas Metody Pola

O klasach w kilku zdaniach.. klasy są bytami programistycznymi (opisami obiektów) mogą przechowywać dane mogą wykonywać polecone zadania każde pojęcie, które chcemy opisać w języku musi być zawarte w definicji klasy klasa definiuje nowy typ danych których wartościami są obiekty Klasa to szablon dla obiektów Obiekt to egzemplarz klasy

Definicja klasy Class nazwa{ //deklaracje pól typ pole1; ... typ poleN; //deklaracje metod typ metoda1(lista parametrów) { //treść metody } typ metodaM(lista parametrów) { treść metody } }

Przykład klasy Klasa która zawiera tylko 3 pola danych class pudelko{ double szerokosc; double wysokosc; double glebokosc;} Utworzenie obiektu klasy i przypisanie wartości polu tego obiektu Pudelko mojePudelko = new Pudelko(); mojePudelko.szerokosc = 100;

Operator new Alokuje pamięć dla obiektu i zwraca jego adres. zmiennaKlasy = new nazwaKlasy(); nazwaKlasy(): konstruktor klasy klasa może deklarować własny konstruktor, lub korzystać z domyślnego alokacja dynamiczna pamięci: tyle obiektów ile potrzeba, ale pamięci może brakować tworzenie zmiennych typów podstawowych nie wymaga new.

Wykorzystanie klasy class PudelkoDemo{ public static void main(String args[]){ Pudelko mojePudelko = new Pudelko(); double objetosc; mojePudelko.szerokosc = 100; mojePudelko.wysokosc = 100; mojePudelko.glebokosc = 100 objetosc= mojePudelko.szerokosc* mojePudelko.wysokosc* mojePudelko.glebokosc; System.out.println(”Objętośc to: ”,objetosc); }

Kompilacja i wykonanie Należy umieścić obie klasy w pliku PudelkoDemo.java class Pudelko {...} class PudelkoDemo { public static void main(...){ ... } } Kompilacja i wykonanie > cd demonstracje/PudelkoDemo > javac PudelkoDemo.java > java PudelkoDemo

Metody? Pola? Metody służą do wykonywania operacji Pola przechowują dane

Niezależność pól Każdy obiekt ma własną kopię pól klasy – zmiana pola jednego nie ma wpływu na wartości pól drugiego Public static void main(String args[]){ Pudelko mojePudelko1 = new Pudelko(); Pudelko mojePudelko2 = new Pudelko(); double objetosc; mojePudelko1.szerokosc = 10; mojePudelko2.szerokosc = 3; objetosc = mojePudelko1.szerokosc*...; System.out.println(”Objętośc: ” + objetosc); objetosc = mojePudelko2.szerokosc*...; System.out.println(”Objętośc: ” + objetosc);}

Kiedy już mamy klase to.. Możemy zadeklarować zmienną typu klasa typ_zmiennej nazwa zmiennej; Ponieważ domyślnie jest ona pusta musimy stworzyć obiekt klasy i przypisać go tej zmiennej Obiekt tworzymy za pomocą operatora new new nazwa_klasy(); Całą konstrukcja wygląda zatem następująco nazwa_klasy nazwa_zmiennej=new nazwa_klasy();

Klasa „od kuchni”.. Czyli co w pamięci piszczy Po wykonaniu ww. instrukcji w pamięci powstają dwie różne struktury Pierwszą z nich jest zmienna referencyjna mojePudelko tworzona na stosie (ang. stack) Drugą jest powstały na tak zwanej stercie (ang. heap) obiekt klasy Pudelko Zmienna mojePudelko zawiera odniesienie do przypisanego jej obiektu klasy Pudelko tylko poprzez nią możemy się do tegoż obiektu odwoływać

Schemat pamięci.. STOS STERTA zmienna1 mojePudelko zmienna2 obiekt klasy Klasa1 obiekt klasy Pudelko obiekt klasy Klasa2 obiekt Klasy Klasa3

Użycie klasy Punkt w klasie Main class Main { public static void main(String args[]) Punkt punkt – new Punkt(); punkt.x = 100; punkt.y = 100; System.out.println(”punkt.x= ” + punkt.x); System.out.println(”punkt.y= ” + punkt.y); }

Należny komentarz.. Jeśli chcemy odwołać się do danego pola klasy używam operatora ‘.’ (kropka) czyli używamy konstrukcji nazwa_zmiennej_obiektowej.nazwa_pola_obiektu Przykładowo przypisanie polu x obiektu klasy Punkt reprezentowanego przez zmienną przykładowy_punkt wartości 100 wygląda następująco przykładowy_punkt.x = 100

Metody Schematyczna deklaracja metody w ciele klasy class nazwa_ metody{ typ_wyniku nazwa_metody(parametry_metody) { //instrukcje metody return wartosc; //dalsza treść }} Klasy oprócz pól przechowujących dane, zawierają także metody, które wykonują zapisane przez programistę operacje Definiujemy je w ciele klasy pomiędzy nawiasami klamrowymi Każda metoda może przyjmować parametry oraz zwracać wynik Słowo void oznacza że metoda nie zwraca żadnych parametrów bądź tez nie pobiera argumentów

Przykład 1 Klasy definiują metody by ukrywać wewnętrzną strukturę danych, jak też na własny użytek. class Pudelko { double szerokosc, wysokosc, glebokosc; //wyswietla objetosc pudelka void objetosc() { System.out.print(“Objetosc: “); System.out.println(szerokosc * wysokosc * glebokosc);} } Odwołanie do pola w danej klasie można wykonać bezpośrednio.

Przykład 2 class Punkt { int x; int y; void wyswietlWspolrzedne() System.out.println(”współrzędna x= ” + x); System.out.println(”współrzędna y= ” + y) } Metodę tę umieszczamy w klasie Punkt Ma ona za zadanie wyświetlenie wartości współrzędnych x i y

Przykład 3 Class Main { public static void main(String args[]) Punkt.punkt = new Punkt(); punkt.x=100; punkt.y=100; punkt.wyswietlWspolrzedne(); }

Wyjaśnienie Nie musimy oddzielnie kompilować klas Main i Punkt Ponieważ w klasie Main jest wykorzystywana klasa Punkt, wydanie polecenia javac Main.java spowoduje kompilację zarówno Main.java jak i Punkt.java

Metoda która zwraca wartość Typ wyrażenia które zwraca wartość metody musi być zgodny z typem wyniku tej metody: class Pudelko { double szerokosc, wysokosc, glebokosc; //oblicza objetosc pudelka double objetosc() { return szerokosc * wysokosc * glebokosc; }

Argumenty metod Argumenty to inaczej mówiąc dane Ich ilość może być dowolna Poszczególne argumenty oddzielamy od siebie znakiem przecinka typ_wyniku nazwa_metody(typ parametru1 nazwa_parametru1...) W ciele każdej z metod następuje przypisanie przekazanego argumentu odpowiedniemu polu

Metoda która posiada parametry Parametry zwiększają stosowalność metod. Metoda bez parametrów: int kwadrat() { return 10 * 10; } Metoda z parametrem: int kwadrat(int i) { return i * i; } Parametr: zmienna która otrzymuje wartość gdy metoda jest wykonywana. Argument: wartość przekazywana metodzie.

Obiekt jako parametr Metoda może zarówno otrzymywać jak też i zwracać obiekt w wyniku swojego działania W obu wymienionych wyżej sytuacjach postępowanie jest identyczne jak w przypadku typów prostych W ciele metody następuje skopiowanie wartości pól z obiektu przekazanego jako parametr do obiektu bieżącego

Metoda main Metoda main jest punktem startowym programu czyli miejscem, od którego zaczyna się jego wykonywanie Jej deklaracja wygląda następująco: class Main { public static void main(String[] args) //tutaj instrukcje do wykonania }

Metoda main Metoda main musi być typu void czyli nie zwracać żadnej wartości Klasa Main jest klasa pomocniczą i służy do zagnieżdżenia w niej metody main (nazwa tej klasy jest dowolna) Lokalizacja metody main decyduje o tym która klasa będzie klasa uruchomieniową Argumentem tej metody jest tablica ciągów znaków zawierająca parametry wywołania programu (parametry przekazane z wiersza poleceń)

Metoda main Poniższy program wyświetla na ekranie zawartość wszystkich komórek tablicy args[] class Main { public static void main(String args[]) System.out.println(”Parametry wywołania: ”); for (int i=0; i<args.lenght; i++) { System.out.println(args[i]) } }

Przeciążanie metod O przeciążeniu mówimy wtedy, gdy w obrębie jednej klasy znajdują się metody o identycznej nazwie Język JAVA dopuszcza tego typu sytuacje pod warunkiem że obie wspomniane wyżej metody będą różniły się argumentami Mogą one również, ale nie muszą różnić się różnić się typem zwracanego wyniku

Przeciążanie metod Klasa posiada dwie lub więcej metod o tej samej nazwie ale różnych deklaracjach parametrów. Java używa liczby i typów argumentów by ustalić którą wersję metody należy wywołać. Przeciążanie metod plus dziedziczenie to sposób na implementację polimorfizmu.

Przeciążanie metod - przykład class Metody { void test() { System.out.println("Brak parametrow");} void test(int a) { System.out.println("a: " + a);} void test(int a, int b) { System.out.println("a i b: " + a + " " + b);} double test(double a) { System.out.println("double a: " + a); return a*a;} }

Literatura „Java po C++” Jan Bielecki „Praktyczny kurs Java” Marcin Lis