Marko Milošević.

Similar documents
PREDMET. Osnove Java Programiranja. Čas JAVADOC

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Aspektno programiranje u Javi. AOP + AspectJ

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Vežbe - XII nedelja PHP Doc

Uvod u relacione baze podataka

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Računarske osnove Interneta (SI3ROI, IR4ROI)

PROGRAMIRANJE. Amir Hajdar

Software and Programming 1

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

University of Palestine. Mid Exam Total Grade: 100

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

1- Differentiate between extends and implements keywords in java? 2- What is wrong with this code:

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

PVC Eco. Eco Prozori i Balkonska Vrata Bela Boja Dezeni drveta su 40% skuplji

Numerical Computation

VDSL modem Zyxel VMG1312-B10A/B30A

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2

Conversions and Overloading : Overloading

Objektno orjentirano programiranje. Predavanje 9 Postojani objekti, serijalizacija, marshaling, relacijske baze podataka

Case Study: Modelling using Objects

CS 132 Midterm Exam Spring 2004

Unit 10: Sorting/Searching/Recursion

AP Computer Science Chapter 10 Implementing and Using Classes Study Guide

PVC Eco. Eco Prozori i Balkonska Vrata Bela Boja Dezeni drveta su 40% skuplji

CMSC 132: Object-Oriented Programming II. Inheritance

CS18000: Programming I

Programming Language Concepts: Lecture 2

javagently jg3e H:\ ProgTwo Programming II Lecture 7 A case study (class containing an array) and model diagrams. 02/02/2003 Dr Andy Brooks 1

Programiranje III razred

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje III razred

Object-Oriented Concepts

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine

Java Memory Management

GUI - događaji (Events) i izuzeci. Bojan Tomić

Banaras Hindu University

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

1) Consider the following code segment, applied to list, an ArrayList of Integer values.

Uputstvo za korišćenje logrotate funkcije

Name Return type Argument list. Then the new method is said to override the old one. So, what is the objective of subclass?

NIZOVI.

Encapsulation in C++

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

PASS4TEST IT 인증시험덤프전문사이트

Abstract Classes and Interfaces

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

WEEK 13 EXAMPLES MONDAY SECTION 2. Author class. public class Author { private static int ID=0; private String AuthorName;

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

IST311 Chapter 8: C# Collections - Index-Sequential Search List & Dictionary PROGRAM

What property of a C# array indicates its allocated size? What keyword in the base class allows a method to be polymorphic?

import org.simpleframework.xml.default; import org.simpleframework.xml.element; import org.simpleframework.xml.root;

Highlights of Last Week

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

Week 14 Lab A Linked List of Integers Maximum Points = 10

Cjenovnik usluga informacionog društva

... ; ako je a n parno. ; ako je a n neparno

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

Jezik Baze Podataka SQL. Jennifer Widom

Object Oriented Programming is a programming method that combines: Advantage of Object Oriented Programming

Notes on Chapter Three

PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development

UMJETNA INTELIGENCIJA U INDUSTRIJI SIGURNOSTI. Antun Krešimir Buterin, Hikvision

Classes and Inheritance Extending Classes, Chapter 5.2

CS/ENGRD 2110 SPRING Lecture 5: Local vars; Inside-out rule; constructors

InfiniteGraph Manual 1

Lab 08 Command Pattern, Undo, Redo

Timing for Interfaces and Abstract Classes

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

Nasleđivanje i izvedene klase u jeziku C++

Sorting and Searching

Questions Answer Key Questions Answer Key Questions Answer Key

Topic 03 - Objects and Classes. I. Classes and Objects Casual Preview. Topic 03. VIII. Benefits of Encapsulation. XIII. Overloading methods, Signature

Računarska grafika-vežbe. 3 JavaFX animacija i interakcija

Birkbeck (University of London) Software and Programming 1 In-class Test Mar 2018

CS18000: Problem Solving And Object-Oriented Programming

Fall CS 101: Test 2 Name UVA ID. Grading. Page 1 / 4. Page3 / 20. Page 4 / 13. Page 5 / 10. Page 6 / 26. Page 7 / 17.

Wrapper Classes double pi = new Double(3.14); 3 double pi = new Double("3.14"); 4... Zheng-Liang Lu Java Programming 290 / 321

Class definition. complete definition. public public class abstract no instance can be created final class cannot be extended

VHDLPrimeri Poglavlje5.doc

a) Answer all questions. b) Write your answers in the space provided. c) Show all calculations where applicable.

Ryerson University Department of Electrical & Computer Engineering COE618 Midterm Examination February 26, 2013

Initializers: Array initializers can be used with class base types as well. The elements of the initializer can be expressions (not just constants).

import java.applet.applet; import java.applet.audioclip; import java.net.url; public class Vjesala2 {

Inheritance (Part 5) Odds and ends

ITI Introduction to Computing II

CS Week 14. Jim Williams, PhD

INTERFACE WHY INTERFACE

Exploring the Java API, Packages & Collections

Page 1 / 3. Page 2 / 18. Page 3 / 8. Page 4 / 21. Page 5 / 15. Page 6 / 20. Page 7 / 15. Total / 100. Pledge:

HIBERNATE - SORTEDSET MAPPINGS

HIBERNATE - INTERCEPTORS

Transcription:

Marko Milošević marko643@gmail.com marko.milosevic@pmf.edu.rs

ESPB 8 Bodovanje Domaći Kolokvijumi 2x10 2x20 Završni ispit 40 Konsultacije sreda 13-14 četvrtak 16-17

Šabloni dizajna (Design Patterns) Metrika softvera (Software Metrics) Testiranje softvera

Standardno rešenje nekog programerskog problema. Pojedini problemi se javljaju vrlo često. Potrebno je rešavati ih brzo i sigurno.

double sum(double[] a) { double s = 0; for (int i = 0; i < a.length; i++){ s += a[i]; return s;

double sum(elementliste root){ double s = 0; ElementListe temp = root; for( ;temp!= null; temp = temp.next()){ s += temp.value(); return s;

double sum(iterable<double> a){ double s = 0; Iterator<Double> i=a.iterator() for(; i.hasnext(); ){ s += i.next(); return s;

double sum(iterable<double> a){ double s = 0; for (Double el:a){ s += el; return s;

Omogućavaju bržu komunikaciju među programerima pri diskusiji dizajna softvera. Obezbeđuju rečnik za razmenu dizajnerskih koncepata među programerima, bilo verbalno ili u dokumentaciji, odnosno specifikaciji. Umesto ova klasa prolazi kroz kolekciju objekata i daje po jedan element, kažemo ova klasa je iterator.

Povećana sigurnost kod se piše prema nekom standardu ima više provere grešaka lakši je za testiranje i debug-ovanje Bolje performanse kod se brže piše objekti dele resurse, pa su memorijski zahtevi manji Povećana fleksibilnost kod se lakše menja jer se umanjuju ili odstranjuju veze između delova koda

Korišćenje pojedinih šablona je uvek dobra ideja. Program se brže razvija. Zahteva manje testiranja. Pouzdaniji je. U nekim slučajevima (npr. šabloni za optimizaciju ili povećanje fleksibilnosti) je bolje sačekati sa primenom. Prvo razviti nešto što funkcioniše. Zatim iskoristiti šablon za otklanjanje slabosti.

Većina ljudi koristi šablone kada primete problem u dizajnu ili impementaciji. npr. promena koju bi trebalo jednostavno izvršiti, ali nije tako, ili performanse sistema nisu na zahtevanom nivou.

Šabloni mogu povećati ili umanjiti razumljivost dizajna ili implementacije. Povećavaju količinu koda. Povećavaju modularnost. U početku mogu izgledati prilično apstraktni. Prave prednosti se ispoljavaju tek kada se radi na većim sistemima.

Osnovni šabloni Šabloni kreiranja (Creational Patterns) Šabloni sakupljanja (Collectional Patterns) Strukturni šabloni (Structural Patterns) Šabloni ponašanja (Behavioral Patterns) Paralelni šabloni (Concurrency Patterns)

Interfejsi Apstraktne klase Privatni metodi Pristupni metodi Menadžer konstantnih podataka Nepromenljivi objekti (Immutable objects) Monitori

public class CategoryA { private double basesalary; private double OT; public CategoryA(...){ public double salary(){ return basesalary + OT;

public class Employee { CategoryA salarycalc; String name; public Employee(String n, CategoryA c){ public void display(){ System.out.println( Name= + name); System.out.println( salary= + calarycalc.getsalary();

public class Main { public static void main(string[] args){ CategoryA c = new CategoryA(10000, 200); Employee e = new Employee( Mika, c); e.display();

public class CategoryB { private double salesamt; private double basesalary; private static final double commision=0.2; public double salary(){ return basesalary + commision * salesamt;

public interface SalaryCalculator { public double getsalary();

public class CategoryA implements SalaryCalculator { @Override public double getsalary(){...

public class Main{ public static void main(string[] args){ SalaryCalculator c = new CategoryA(10000, 200); Employee e = new Employee( Mika, c); e.display(); c = new CategoryB(20000, 800); e = new Employee( Zika, c); e.display();

public class Main{ public static void main(string[] args){ SalaryCalculator c = new CategoryA(10000, 200); Employee e = new Employee( Mika, c); e.display(); c = new CategoryB(20000, 800); e = new Employee( Zika, c); e.display();

public abstract class Employee { private String name; private String ID; public Employee(...){... public String getname(){... public String getid(){... public void save(){... public abstract String compute();

public class Account { public static final String ACCOUNT_DATA_FILE = "ACCOUNT.TXT"; public static final int VALID_MIN_LNAME_LEN = 2; public void save() { public class Address { public static final String ADDRESS_DATA_FILE = "ADDRESS.TXT"; public static final int VALID_ST_LEN = 2; public static final String VALID_ZIP_CHARS = "0123456789"; public static final String DEFAULT_COUNTRY = "USA"; public void save() {

public class ConstantDataManager { public static final String ACCOUNT_DATA_FILE = "ACCOUNT.TXT"; public static final int VALID_MIN_LNAME_LEN = 2; public static final String ADDRESS_DATA_FILE = "ADDRESS.TXT"; public static final int VALID_ST_LEN = 2; public static final String VALID_ZIP_CHARS = "0123456789"; public static final String DEFAULT_COUNTRY = "USA";

public class Card { public static final int PIK = 1; public static final int KARO = 2;... public static final int KEC = 1; public static final int DVOJKA = 2;...

Konstruktor public Card(int boja, int broj){... Poziv konstruktora Card c = new Card(Card.PIK, Card.DVOJKA); Problem Card c = new Card(Card.DVOJKA, Card.PIK); Ne radimo proveru tipa.

Rešenje je korišćenje enum tipa u C++ ili sličnih konstrukcija u Javi ili C# public class BojaKarte { public static final BojaKarte PIK = new BojaKarte("pik"); public static final BojaKarte KARO = new BojaKarte("karo"); public static final BojaKarte HERC = new BojaKarte("herc"); public static final BojaKarte TREF = new BojaKarte("tref"); private String boja; private BojaKarte(String boja){ this.boja = boja; @Override public String tostring() { return boja;

public class BrojKarte { public static final BrojKarte KEC = new BrojKarte("KEC"); public static final BrojKarte DVOJKA = new BrojKarte("DVOJKA"); //... private String broj; private BrojKarte(String s){ this.broj = s; @Override public String tostring() { return broj;

public class Card { private BojaKarte boja; private BrojKarte broj; public Card(BojaKarte boja,brojkarte broj){ this.boja = boja; this.broj = broj; @Override public String tostring() { return "(" + broj + ", " + boja + ")";

Card c = new Card(BojaKarte.PIK, BrojKarte.KEC);

Privatni metodi Pristupni metodi Nepromenljivi objekti (Immutable objects) Monitori