1 Atrybuty i metody klasowe

Podobne dokumenty
Język obiektowy o składni podobnej do C++ Zarządzanie pamięcią niepotrzebne obiekty automatycznie usuwane

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

Programowanie obiektowe

Dokumentacja do API Javy.

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

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wykład 7: Pakiety i Interfejsy

Programowanie w Internecie. Java

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

Programowanie obiektowe

Kurs WWW. Paweł Rajba.

Programowanie obiektowe zastosowanie języka Java SE

Wykład 4: Klasy i Metody

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

Multimedia JAVA. Historia

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Programowanie obiektowe

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

Programowanie Obiektowe i C++

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

Programowanie obiektowe

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

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

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

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

Enkapsulacja, dziedziczenie, polimorfizm

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Podstawy języka Java. przygotował:

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

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

Polimorfizm. dr Jarosław Skaruz

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

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

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

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

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

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

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

Rozdział 4 KLASY, OBIEKTY, METODY

KLASY, INTERFEJSY, ITP

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

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

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

Współbieżność w środowisku Java

Wykład 2: Podstawy Języka

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

Aplikacje w środowisku Java

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

Java Język programowania

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

Podstawy Języka Java

Aplikacje w Javie- wykład 11 Wątki-podstawy

Java: interfejsy i klasy wewnętrzne

Wykład 8: klasy cz. 4

Programowanie obiektowe

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

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

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

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

Java niezbędnik programisty spotkanie nr 3. Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja...

TEMAT : KLASY DZIEDZICZENIE

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

Java. Programowanie Obiektowe Mateusz Cicheński

Programowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006

Klasy abstrakcyjne i interfejsy

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

Podstawy programowania obiektowego

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Definicje klas i obiektów. Tomasz Borzyszkowski

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Spis treści. 1 Java T M

Programowanie obiektowe

Klasy abstrakcyjne, interfejsy i polimorfizm

Ćwiczenie 1. Przygotowanie środowiska JAVA

Technologie i usługi internetowe cz. 2

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

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

Kontenery i komponenty graficzne

Programowanie obiektowe w języku

2. Składnia, środowisko i konwencje w Javie

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Aplikacje RMI Lab4

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

Przypomnienie o klasach i obiektach

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

Wywoływanie metod zdalnych

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

Programowanie obiektowe

Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

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

Podstawy programowania obiektowego w języku Java dla programujących w C++

Programowanie obiektowe

Definiowanie własnych klas

Transkrypt:

1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich obiektów danej klasy (i ew. odpowiednich metod). Do tego celu służą atrybuty i metody statyczne (klasowe). Przykład struct Licznik { static int ile; // Ile aktywnych obiektów klasy Licznik(){ ile++; ~Licznik(){ ile--; ; int Licznik::ile=0; main() { Licznik l ; Licznik* l2 = new Licznik(); cout << Licznik::ile <<endl; cout << l.ile <<endl; Zauważmy, że: Zmienna ile jest wspólna dla wszystkich obiektów klasy licznik. Jej deklaracja jest wewnątrz klasy, ale definicja jest globalna. Dostęp jest możliwy zarówno przez operator zasięgu, jak i dowolny obiekt klasy. 1

Metody klasowe class Licznik { static int licz; // Ile aktywnych obiektów klasy public: Licznik(){ licz++; ~Licznik(){ licz--; static int ile() { return licz; ; int Licznik::licz=0; main(){ Licznik l ; Licznik* l2 = new Licznik(); cout << Licznik::ile() <<endl; cout << l.ile() <<endl; 2 Java Java Język obiektowy o składni podobnej do C++ Niezależny od platformy (w zasadzie) maszyna wirtualna Zarządzanie pamięcią niepotrzebne obiekty automatycznie usuwane Program jest zbiorem klas nie ma obiektów globalnych. Mechanizmy do programowania współbieżnego (wątki). Applety mini-aplikacje wykonywane np. wewnątrz pzeglądarki internetowej Java vs C++ Nie ma zmiennych/funkcji globalnych zamiast nich używamy atrybutów/metod statycznych, np. public static void main(string[] args) //... 2

Nie ma sekcji public/private oznaczamy każdą składową. Nie ma wskaźników, tylko referencje. String s = new String("Luna to surowa pani"); Wszystkie klasy dziedziczą od Object. Nie ma przeciążania operatorów (ale jest przeciążanie metod). Najprostszy program public class Hello { System.out.println("Hello!"); // out jest atr. statycznym klasy System Każdą klasę umieszczamy w osobnym pliku o nazwie NazwaKlasy.java (w tym przypadku Hello.java). Kompilacja i uruchomienie programu Kompilacja programu javac Hello.java Uruchomienie java Hello Wyszukiwanie klas zmienna CLASSPATH i opcja -classpath. 3 Referencje Referencje Do wszystkich obiektów programista uzyskuje dostęp poprzez referencje. Referencja może mieć wartość NULL, wtedy nie wskazuje na żaden obiekt. Nowe obiekty tworzy się przy pomocy new. 3

Referencji można przypisać wartość w dowolnym momencie. Wiele referencji może wskazywać na ten sam obiekt. Usunięcie obiektu może nastąpić w momencie gdy ostatnia wskazująca go referencja zostanie usunięta, bądź zostanie jej przypisana wartość NULL. Za zwalnianie pamięci odpowiedzialna jest maszyna wirtualna. Brak operatora delete Przykład referencje public class Hello2 { String greeting = new String("Hello"); System.out.println(greeting); greeting = null; Przykład wywoływanie metod public class Hello3 { String greeting = new String("Hello"); for (int i = 0; i < greeting.length(); i++) System.out.println(greeting.charAt(i)); // Nie możemy napisać greeting[i] // Nie ma przeciążania operatorów 4 Pakiety Pakiety W C++ organizację programu wyznaczał podział na moduły (pliki); w Javie służą do tego pakiety. Pakiety są przydatne z kilku powodów: pozwalają na grupowanie powiązanych ze sobą klas, 4

klasy w pakiecie mogą korzystać z popularnych nazw, które inaczej mogłyby ze sobą kolidować mogą zawierać definicje klas i składowych, które są dostępne tylko wewnątrz pakietu. Używanie pakietów class Date1{ java.util.date now = new java.util.date(); System.out.println(now); Używanie pakietów import java.util.date; class Date2 { Date now = new Date(); System.out.println(now); Tworzenie pakietów package geometry; class Point { double x, y; public void moveto(double x, double y) { this.x = x; this.y = y; Przy tworzeniu własnych pakietów, pakiet foo.bar.baz powinien znaleźć się w katalogu foo/bar/baz. Zmienna CLASSPATH i opcja -classpath. 5

Nazewnictwo pakietów Jeżeli zamierzamy rozpowszechniać nasz pakiet, musimy zadbać aby jego nazwa nie kolidowała z już istniejącymi. Sugerowana konwencja łączy nazwy pakietów z domenami internetowymi: firma example.com poprzedza nazwy swoich pakietów com.example. Np. moja domena to marcin.org, więc powinienem napisać package org.marcin.geometry; class Point { //... Dziedziczenie i konstruktory package mwt; import javax.swing.jframe; import java.awt.component; public class MFrame extends JFrame { public MFrame(String title) { super(title); setdefaultlookandfeeldecorated(true); setdefaultcloseoperation(jframe.exit_on_close); final void addcontent(component comp) { getcontentpane().add(comp); 5 Interfejsy Interfejsy Zamiast klas abstrakcyjnych używamy interfejsów: public interface Runnable { int ANSWER = 42; void clicked(); public class Runny implements Runnable { public void run() { 6

Metody interfejsu są zawsze publiczne; nie mogą być statyczne. Pola interfejsu należy rozumieć jako stałe. Dziedziczenie interfejsów Interfejs może dziedziczyć wiele interfejsów: public interface Bar { void bar(); public interface Baz { void baz(); public interface Foo extends Bar,Baz { Klasy anonimowe Czasem tworzymy klasę tylko po to, żeby przekazać jej obiekt jako parametr. W Javie możemy utworzyć taką jednorazówkę w miejscu wywołania, np. class Lola { Thread lola; lola = new Thread(new Runnable() { public void run() { System.out.println("Run Lola, run"); ); lola.start(); Applety import java.applet.*; import java.awt.*; public class HelloApplet extends Applet { public void paint(graphics g) { g.drawstring("hey hey hey",20,20); g.drawstring("hello World",20,40); public void init() { // Inicjalizacja public void stop() { // Końcowe porządki 7

6 Unicode Unicode Dzięki Unicode możemy w programach używać znaków dowolnego języka class Gżegżółka { String gżegżółka = new String("Gżegżółka"); System.out.println(gżegżółka); 8