public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

Podobné dokumenty
OMO. 2 - Objektově orientovaný přístup

Principy objektově orientovaného programování

Abstraktní třída a rozhraní

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Programování v Javě I. Leden 2008

Programování v Javě I. Únor 2009

Úvod do programovacích jazyků (Java)

typová konverze typová inference

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

UJO Framework. revoluční architektura beans. verze

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

OOPR_05. Případové studie

20. Projekt Domácí mediotéka

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Generické programování

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Java a XML. 10/26/09 1/7 Java a XML

Teoretické minimum z PJV

1. Téma 12 - Textové soubory a výjimky

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Java - výjimky. private void vstup() throws IOException {... }

KTE / ZPE Informační technologie

Abstraktní datové typy: zásobník

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Distribuované systémy a výpočty

Třídy a objekty -příklady

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Seminář Java II p.1/43

Iterator & for cyklus

Seminář Java IV p.1/38

Algoritmizace a programování

Typický prvek kolekce pro české řazení

Návrh softwarových systém. Návrh softwarových systémů

Object-relational mapping (JPA, Hibernate)

Základní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

PREPROCESOR POKRAČOVÁNÍ

Projekty pro výuku programování v jazyce Java

11. Dědičnost. Dědičnost strana 103

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Jazyk C# (seminář 3)

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Objektově orientované programování

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

RMI Remote Method Invocation

Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.

7. Datové typy v Javě

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

IRAE 07/08 Přednáška č. 1

Objektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc.

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

1. Programování proti rozhraní

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Objektově orientované programování v PHP 5. Martin Klíma

Java Výjimky Java, zimní semestr

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Modularita. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Datové struktury. alg12 1

Čipové karty Lekařská informatika

5 Rekurze a zásobník. Rekurzivní volání metody

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Datové abstrakce v programovacích jazycích

Přehled probírané látky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy

Dědičnost (inheritance)

Vláknové programování část V

Java Enum Java, zimní semestr ,2017 1

Třídy a dědičnost. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Úvod do programovacích jazyků (Java)

boolean hasnext() Object next() void remove() Kolekce

7. Dynamické datové struktury

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Distribuované systémy a výpočty

Java Managenent Extension JMX

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo

Dědění, polymorfismus

Úvod do programovacích jazyků (Java)

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

OOPR_05. Případové studie

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Algoritmizace a programování

X-komponenty 3.1. Uživatelská příručka. J. Kocman, V. Trojan

Návrhové vzory OMO, LS 2014/2015

Úvod do programování - Java. Cvičení č.4

Transkript:

Objekty, třídy a hierarchie tříd Interface a abstraktní třídy Dědičnost Message passing Class diagramy a příklady systémů modelovaných pomocí OOP Volba správného přístupu Rozdíl mezi asociací, agregací a kompozicí Dědičnost versus kompozice Polymorfismus SOLID Správná reprezentace Verze 22.10.2018

Problém

public class Karel { private int position; public boolean issmiling; public int getposition() { return position; public Karel(int position){ this.position = position; private void updateposition(int step){ position = position + step; public void stepforward() { updateposition(1); ; public void stepbackward()... public class BabyProgrammer { public static void main(string[] args){ Karel mykarel = new Karel(10); mykarel.issmiling = false; mykarel.stepforward(); mykarel.stepforward(); mykarel.stepbackward(); mykarel.issmiling = true; System.out.println("Position is " + mykarel.getposition());

Příklad rozhraní v Java Collection API

public abstract class AbstractEmployee { private String name; private String address; private int number; public abstract double computepay(); public abstract int getnumber(); public AbstractEmployee(String name, String address, int number) { this.name = name; this.address = address; public void mailcheck() { System.out.println("Mailing check to"+this.name+" " + this.address); public String getname() { return name; public String getaddress() { return address; public void setaddress(string newaddress) { address = newaddress;

4.

Asociace Dědičnost Realizace Závislost Agregace Kompozice

public class Person { public class Employment { long salary; Interval period; Company company; Person person; public Person getperson() { return person; public class Company { public Set<Employment> employments; Set <Person> getemployees(){ Set<Person> employees = new HashSet<>(); for(employment employment: employments){ employees.add(employment.getperson()); return employees;

Token Function Neuron Connection výstup vstup NetIterator TokenSynchronizer

výstup vstup

Je lepší dědičnost nebo kompozice?

Je lepší dědičnost nebo kompozice?

class Adder{ static int add(int a,int b){return a+b; static int add(int a,int b,int c){return a+b+c; class TestOverloading1{ public static void main(string[] args){ System.out.println(Adder.add(11,11)); System.out.println(Adder.add(11,11,11)); class Adder{ static int add(int a, int b){return a+b; static double add(int a, int b){return a+b; class TestOverloading2{ public static void main(string[] args){ System.out.println(Adder.add(11,11)); System.out.println(Adder.add(12,12)); class Adder{ static int add(int a, int b){return a+b; static double add(double a, double b){return a+b; class TestOverloading2{ public static void main(string[] args){ System.out.println(Adder.add(11,11)); System.out.println(Adder.add(12.3,12.6));

class Vehicle{ void run(){ System.out.println("Vehicle is running"); class Bike extends Vehicle{ public static void main(string args[]){ Bike obj = new Bike(); obj.run(); //=> Output:Vehicle is running class Vehicle{ void run(){ System.out.println("Vehicle is running"); class Bike2 extends Vehicle { void run() { System.out.println("Bike is running safely"); public static void main(string args[]) { Bike2 obj = new Bike2(); obj.run(); //=> Output:Bike is running

class A{ A get(){return this; class B1 extends A{ B1 get(){return this; void message(){ System.out.println("Covariant return type"); public static void main(string args[]){ new B1().get().message();