Wykład 4: Klasy i Metody



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

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

Rozdział 4 KLASY, OBIEKTY, METODY

Podstawy programowania obiektowego

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

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie obiektowe

Wykład 2: Podstawy Języka

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

Materiały do zajęć VII

Definicje klas i obiektów. Tomasz Borzyszkowski

Wykład 8: klasy cz. 4

Wykład 5: Klasy cz. 3

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

Wykład 6: Dziedziczenie

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

Dokumentacja do API Javy.

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

Zaawansowane programowanie w języku C++ Klasy w C++

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Definiowanie własnych klas

Wykład 7: Pakiety i Interfejsy

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

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

Programowanie obiektowe

Metody Metody, parametry, zwracanie wartości

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

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

Aplikacje w środowisku Java

Polimorfizm. dr Jarosław Skaruz

Programowanie obiektowe

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Dziedziczenie. dr Jarosław Skaruz

JAVA W SUPER EXPRESOWEJ PIGUŁCE

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

1 Atrybuty i metody klasowe

Programowanie w Internecie. Java

Podstawy Języka Java

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie obiektowe

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne

Szablony klas, zastosowanie szablonów w programach

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

Definiowanie własnych klas

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Lab 9 Podstawy Programowania

Języki i techniki programowania Ćwiczenia 2

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

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

Wykład 3 Składnia języka C# (cz. 2)

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

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

Programowanie obiektowe

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

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

Konstruktor kopiujacy

Kurs WWW. Paweł Rajba.

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie 2. Język C++. Wykład 3.

Podstawy programowania obiektowego

Tbli Tablice obiektów biktó są tworzone dokładnie d tak samo, jak i tablice, składające się z elementów innego typu

Spis treści. 1 Java T M

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Podstawy programowania w języku C++

Programowanie Obiektowe i C++

TEMAT : KLASY DZIEDZICZENIE

Podstawy i języki programowania

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

Język C zajęcia nr 11. Funkcje

Programowanie w języku C++

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

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

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

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

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie urządzeń mobilnych

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

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

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

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Wprowadzenie do języka Java

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Programowanie w języku C++

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

Wstęp do Programowania 2

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Programowanie, część I

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY

Transkrypt:

Wykład 4: Klasy i Metody

Klasa Podstawa języka. 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 trzy 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;

Wykorzystanie Klasy class PudelkoDemo { public static void main(string args[]) { Pudelko mojepudelko = new Pudelko(); double objetosc; mojepudelko.szerokosc = 10; mojepudelko.wysokosc = 20; mojepudelko.glebokosc = 15; objetosc = mojepudelko.szerokosc * mojepudelko.wysokosc * mojepudelko.glebokosc; System.out.println( Objetosc 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

Niezależność Pól Każdy obiekt ma własną kopie 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( Objetosc: + objetosc); objetosc = mojepudelko2.szerokosc *...; System.out.println( Objetosc: + objetosc);

Deklaracja Obiektów Uzyskanie obiektów klasy, proces dwu-etapowy: Deklaracja zmiennej typu klasy: Box mybox; Powstaje zmienna odwołująca się do obiektu, której wartością jest na razie null. Uzyskanie adresu obiektu i przypisanie go zmiennej. mybox = new Box();

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.

Przypisania Zmiennych Obiektowych Przypisanie kopiuje adres, nie wartość: Box b1 = new Box(); Box b2 = b1; Obie zmienne wskazują na ten sam obiekt. Zmiennie nie są w żaden sposób połączone:... b1 = null; b2 nadal wskazuje na oryginalny obiekt.

Metody Klasy Ogólna postać definicji metody: type nazwa(lista-parametrow) { //treść metody return wartosc; //dalsza treść type jest typem wartości zwracanych jeśli nie zwraca wartości, jej typem jest void nazwa jest nazwą metody lista-parametrow jest listą typów i nazw argumentów oddzielonych przecinkami return wartosc to wartość zwracana przez metodę

Odwołanie do pola w danej klasie można wykonać bezpośrednio. Metody Klasy: Przykład 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 innej klasie niż bieżąca musi odbyć się przez obiekt tej klasy. Metody Klasy: Przykład public static void main(string args[]) { Pudelko mojepudelko1 = new Pudelko(); Pudelko mojepudelko2 = new Pudelko(); mojepudelko1.szerokosc = 10;... mojepudelko2.szerokosc = 3;... //wyswietl objetosc pierwszego pudelka mojepudelko1.objetosc(); //wyswietl objetosc drugiego pudelka mojepudelko2.objetosc();

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;

Metoda Która Zwraca Wartość Typ zmiennej której przypisujemy wartość metody musi być zgodny z typem wyniku tej metody: public static void main(string args[]) { Pudelko mojepudelko1 = new Pudelko(); Pudelko mojepudelko2 = new Pudelko(); double objetosc; mojepudelko1.szerokosc = 10;... mojepudelko2.szerokosc = 3;... objetosc = mojepudelko1.objetosc(); System.out.println( Objetosc: + objetosc); objetosc = mojepudelko2.objetosc(); System.out.println( Objetosc: + objetosc);

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.

Metoda z Parametrami: Przykład class Pudelko { double szerokosc, wysokosc, glebokosc; //oblicza objetosc pudelka double objetosc() { return szerokosc * wysokosc * glebokosc; //ustala wymiary pudelka void ustalwymiary(double s, double w, double g) { szerokosc = s; wysokosc = w; glebokosc = g;

Metoda z Parametrami: Przykład public static void main(string args[]) { Pudelko mojepudelko1 = new Pudelko(); Pudelko mojepudelko2 = new Pudelko(); double objetosc; mojepudelko1.ustalwymiary(10, 20, 15); mojepudelko2.ustalwymiary(3, 6, 9); objetosc = mojepudelko1.objetosc(); System.out.println( Objetosc: + objetosc); objetosc = mojepudelko2.objetosc(); System.out.println( Objetosc: + objetosc);

Konstruktory Konstruktor realizuje automatyczną inicjację obiektu zaraz po jego utworzeniu. Konstruktor posiada tą samą nazwę jak klasa w której się znajduje. Konstruktor piszemy bez typu wyniku: domyślnym typem konstruktora klasy jest ta sama klasa. Gdy klasa nie posiada konstruktora, domyślny konstruktor automatycznie inicjuje pola zerami.

Konstruktor: Przykład class Pudelko { double szerokosc, wysokosc, glebokosc; //konstruktor pudelka Pudelko() { System.out.println( Budujemy pudelko ); szerokosc = 10; wysokosc = 10; glebokosc = 10; //oblicza objetosc pudelka double objetosc() { return szerokosc * wysokosc * glebokosc;

Konstruktor: Przykład public static void main(string args[]) { Pudelko mojepudelko1 = new Pudelko(); Pudelko mojepudelko2 = new Pudelko(); double objetosc; objetosc = mojepudelko1.objetosc(); System.out.println( Objetosc: + objetosc); objetosc = mojepudelko2.objetosc(); System.out.println( Objetosc: + objetosc);

Parametryzowany Konstruktor Wszystkie pudełka mają tą samą objętość. Potrzebujemy konstruktora, który tworzy pudełka różnych rozmiarów. class Pudelko { double szerokosc, wysokosc, glebokosc; //parametryzowany konstruktor pudelka Pudelko(double s, double w, double g) { szerokosc = s; wysokosc = w; glebokosc = g;...

Parametryzowany Konstruktor public static void main(string args[]) { Pudelko mojepudelko1 = new Pudelko(10,20,15); Pudelko mojepudelko2 = new Pudelko(3,6,9); double objetosc; objetosc = mojepudelko1.objetosc(); System.out.println( Objetosc: + objetosc); objetosc = mojepudelko2.objetosc(); System.out.println( Objetosc: + objetosc);

Słowo Kluczowe this Odwołanie z metody do obiektu który ją wywołał. //zbedne uzycie this Pudelko(double s, double w, double g) { this.szerokosc = s; this.wysokosc = w; this.glebokosc = g; Dozwolone wszędzie tam gdzie można odwołać się do obiektu bieżącej klasy.

Przesłanianie Pól Nielegalne jest deklarowanie dwóch zmiennych o tej samej nazwie wewnątrz zawierających się bloków. Legalne jest deklarowanie zmiennych lokalnych i parametrów o tej samej nazwie jak pola klasy. Następuje przesłonięcie pól przez zmienne lokalne. Pudelko(double szerokosc, double wysokosc, double glebokosc) { this.szerokosc = szerokosc; this.wysokosc = wysokosc; this.glebokosc = glebokosc;

Metoda finalize() Dodatkowe czynności do wykonania gdy obiekt jest usuwany z pamięci, np. zwolnienie dostępu do pliku. Wykonywane przez metodę finalize(): protected void finalize() {... Metoda wywoływana jest przez odśmiecacz pamięci gdy ten usuwa niepotrzebny obiekt ze sterty.

Przykład: Klasa Stos Stos przechowuje dane w porządku first-in last-out: pierwszy zapisany, ostatni odczytany. Oto implementacja 10-elementowego stosu: class Stos { int stos[] = new int[10]; int wskaznik; //inicjalizacja wskaznika Stos() { wskaznik = -1;

Przykład: Klasa Stos //zapis elementu na stosie void push(int element) { if (wskaznik == 9) System.out.println( Stos jest pelny. ); else stos[++wskaznik] = element; //odczyt elementu ze stosu int pop() { if (wskaznik < 0) { System.out.println( Stos jest pusty. ); return 0; else return stos[wskaznik ];

Przykład: Użycie Klasy Stos class TestStos { public static void main(string args[]) { Stos stos1 = new Stos(); Stos stos2 = new Stos(); for (int i=0; i<10; i++) stos1.push(i); for (int i=10; i<20; i++) stos2.push(i); System.out.println( Pierwszy stos: ); for (int i=0; i<10; i++) System.out.println(stos1.pop()); System.out.println( Drugi stos: ); for (int i=0; i<10; i++) System.out.println(stos2.pop());