Designing for Modularity with Java 9
|
|
- Noah Murphy
- 6 years ago
- Views:
Transcription
1 Designing for Modularity with Java 9 Paul Sander
2 Today's journey Module primer Services & DI Modular design Layers & loading
3 Designing for Modularity with Java 9 What if we forget about the classpath... embrace modules... want to create truly modular software?
4 Designing for Modularity with Java 9 What if we forget about the classpath... embrace modules... want to create truly modular software? Design Constraints Patterns
5 A Module Primer module easytext.cli { requires easytext.analysis; module easytext.analysis { exports analysis.api; opens impl; easytext.cli easytext.analysis analysis.api reflection only! impl other
6 A Module Primer module easytext.cli { requires easytext.analysis; module easytext.analysis { exports analysis.api; Modules define dependencies opens impl; explicitly easytext.cli easytext.analysis analysis.api reflection only! impl other
7 A Module Primer module easytext.cli { Packages are encapsulated by default requires easytext.analysis; module easytext.analysis { exports analysis.api; opens impl; easytext.cli easytext.analysis analysis.api reflection only! impl other
8 A Module Primer module easytext.cli { requires easytext.analysis; Packages can be opened for deep reflection at run-time module easytext.analysis { exports analysis.api; opens impl; easytext.cli easytext.analysis analysis.api reflection only! impl other
9 Services
10 EasyText example easytext.gui easytext.cli analysis.api easytext.analysis.kincaid easytext.analysis.coleman
11 EasyText example easytext.gui easytext.cli analysis.api easytext.analysis.kincaid easytext.analysis.coleman
12 Encapsulation vs. decoupling Even with interfaces, an instance has to be created Analyzer i = new KincaidAnalyzer();
13 Encapsulation vs. decoupling Even with interfaces, an instance has to be created Analyzer i = new KincaidAnalyzer(); We need to export our implementation! :-( module easytext.kincaid { exports easytext.analysis.kincaid;
14 Reflection isn t a workaround Class myimpl = Class.forName( ); MyInterface i = myimpl.newinstance(); Package needs to be open module easytext.kincaid { opens easytext.analysis.kincaid;
15 Services to the rescue easytext.gui easytext.cli uses uses Module System provides provides easytext.analysis.kincaid easytext.analysis.coleman
16 Providing a service module easytext.analyzer.kincaid { requires easytext.analysis.api; provides javamodularity.easytext.analysis.api.analyzer with javamodularity.easytext.analysis.kincaid.kincaidanalyzer;
17 Implementing a service Just a plain Java class Not exported! public class KincaidAnalyzer implements Analyzer { public KincaidAnalyzer() public double analyze(list<list<string>> sentences) {
18 Consuming a service module easytext.cli { requires easytext.analysis.api; uses javamodularity.easytext.analysis.api.analyzer;
19 Consuming a service module easytext.cli { requires easytext.analysis.api; uses javamodularity.easytext.analysis.api.analyzer; Iterable<Analyzer> analyzers = ServiceLoader.load(Analyzer.class); for (Analyzer analyzer: analyzers) { System.out.println( analyzer.getname() + ": " + analyzer.analyze(sentences));
20 Finding the right service ServiceLoader supports streams Lazy instantiation of services ServiceLoader<Analyzer> analyzers = ServiceLoader.load(Analyzer.class); analyzers.stream().filter(provider -> ).map(serviceloader.provider::get).foreach(analyzer -> System.out.println(analyzer.getName()));
21 Add new analyses by adding provider modules on the module path
22 Dependency Injection
23 Providing a Guice service Provider module should export a Guice Module public class ColemanModule extends AbstractModule protected void configure() { Multibinder.newSetBinder(binder(), Analyzer.class).addBinding().to(ColemanAnalyzer.class);
24 Providing a Guice service Consumers must be able to compile against the Guice module Service impl package must be open module easytext.algorithm.coleman { requires easytext.algorithm.api; requires guice; requires guice.multibindings; javamodularity easytext algorithm coleman ColemanAnalyzer.java guice ColemanModule.java module-info.java exports javamodularity.easytext.algorithm.coleman.guice; opens javamodularity.easytext.algorithm.coleman;
25 Consuming a Guice service public class Main { public static void main(string... args) { Injector injector = Guice.createInjector( new ColemanModule(), new KincaidModule()); CLI cli = injector.getinstance(cli.class); cli.analyze(args[0]);
26 Consuming a Guice service Require the implementation Guice modules Open package for Guice injection module easytext.cli { requires easytext.algorithm.api; requires guice; requires easytext.algorithm.coleman; requires easytext.algorithm.kincaid; opens javamodularity.easytext.cli;
27 Consuming a Guice service Now we public class CLI { private final Set<Analyzer> public CLI(Set<Analyzer> analyzers) { this.analyzers = analyzers;
28 Injecting a service algorithm.coleman Create binding guice
29 Injecting a service Requires Guice module algorithm.coleman cli Create binding guice
30 Injecting a service Requires Guice module algorithm.coleman cli Create injector Create binding guice
31 Injecting a service Requires Guice module algorithm.coleman cli Create injector Create binding Inject instance guice
32 Services vs Guice Benefits of using vs using an API Developers might be more familiar the model Downsides of using Guice Requires more coupling Adding an implementation requires code changes
33 Services *and* Guice module easytext.algorithm.coleman { requires easytext.algorithm.api; requires guice; requires guice.multibindings; exports javamodularity.easytext.algorithm.coleman.guice; opens javamodularity.easytext.algorithm.coleman;
34 Services *and* Guice module easytext.algorithm.coleman { requires easytext.algorithm.api; requires guice; requires guice.multibindings; exports javamodularity.easytext.algorithm.coleman.guice; opens javamodularity.easytext.algorithm.coleman; provides com.google.inject.abstractmodule with javamodularity.easytext.algorithm.coleman.guice.colemanmodule
35 Services *and* Guice module easytext.cli { requires easytext.algorithm.api; requires guice; requires easytext.algorithm.coleman; requires easytext.algorithm.kincaid; opens javamodularity.easytext.cli;
36 Services *and* Guice module easytext.cli { requires easytext.algorithm.api; requires guice; requires easytext.algorithm.coleman; requires easytext.algorithm.kincaid; opens javamodularity.easytext.cli; uses com.google.inject.abstractmodule
37 Modular Design
38 Naming Modules... is hard
39 Naming Modules... is hard Application modules Short & memorable <application>.<component> e.g. easytext.gui
40 Naming Modules... is hard Application modules vs. Library modules Short & memorable <application>.<component> e.g. easytext.gui Uniqueness Reverse DNS com.mycompany.ourlib 'Root package'
41 API Modules
42 API Modules Module with exported API only When multiple implementations are expected Can also contain 'default' implementation
43 API Modules Module with exported API only When multiple implementations are expected Can also contain 'default' implementation API modules export: Interfaces (Abstract) classes Exceptions Etc.
44 Small Modules vs. All-in-one
45 Small Modules vs. All-in-one Small modules Composability Reusability
46 Small Modules vs. All-in-one Small modules Composability? Reusability?? All-in-one modules? Ease-of-use?
47 Small Modules vs. All-in-one Why choose? Use aggregator modules
48 Small Modules vs. All-in-one Why choose? Use aggregator modules Module without code, using implied readability: module mylib { requires transitive mylib.one; requires transitive mylib.two; requires transitive mylib.three;
49 Small Modules vs. All-in-one Why choose? Use aggregator modules Module without code, using implied readability: mylib module mylib { requires transitive mylib.one; requires transitive mylib.two; requires transitive mylib.three; mylib.one mylib.three mylib.two
50 Small Modules vs. All-in-one Why choose? Use aggregator modules mylib application mylib.one mylib.three mylib.two
51 Small Modules vs. All-in-one Why choose? Use aggregator modules mylib application mylib.one mylib.three mylib.two
52 Small Modules vs. All-in-one Why choose? Use aggregator modules mylib application mylib.one mylib.three Implied readability mylib.two
53 Small Modules vs. All-in-one mylib.extra mylib.core
54 Small Modules vs. All-in-one mylib.extra application mylib.core
55 Small Modules vs. All-in-one mylib.extra application mylib.core
56 Small Modules vs. All-in-one mylib.extra application mylib.core
57 Breaking cycles Non-modular JARs can have cyclic dependencies Modules can not
58 Breaking cycles
59 Breaking cycles public class Author { private String name; private List<Book> books; public Author(String name) { this.name = name; //..
60 Breaking cycles public class Author { private String name; private List<Book> books; public class Book { public Author author; public String title; public Author(String name) { this.name = name; //.. public void printbook() { System.out.printf( "%s, by %s\n\n%s", title, author.getname(), text);
61 Breaking cycles public class Author { private String name; private List<Book> books; public class Book { public Author author; public String title; public Author(String name) { this.name = name; //.. public void printbook() { System.out.printf( "%s, by %s\n\n%s", title, author.getname(), text);
62 Breaking cycles public class Author { private String name; private List<Book> books; public class Book { public Author author; public String title; public Author(String name) { this.name = name; //.. public void printbook() { System.out.printf( "%s, by %s\n\n%s", title, author.getname(), text);
63 Breaking cycles: abstraction
64 Breaking cycles: abstraction public class Author //.. implements Named { public String getname() { return this.name;
65 Breaking cycles: abstraction public class Author implements Named { //.. public String getname() { return this.name; public interface Named { String getname();
66 Optional dependencies Requires means compile-time and run-time dependency What if we want an optional dependency? Use it if available at run-time Otherwise, run without
67 Optional dependencies Requires means compile-time and run-time dependency What if we want an optional dependency? Use it if available at run-time Otherwise, run without Compile-time only dependencies: module framework { requires static fastjsonlib;
68 Optional dependencies Requires means compile-time and run-time dependency What if we want an optional dependency? Use it if available at run-time Otherwise, run without Compile-time only dependencies: module framework { requires static fastjsonlib; Resolve fastjsonlib if available at run-time, ignore if not
69 Optional dependencies Avoid run-time exceptions!
70 Optional dependencies Avoid run-time exceptions! try { Class<?> clazz = Class.forName("javamodularity.fastjsonlib.FastJson"); FastJson instance = (FastJson) clazz.getconstructor().newinstance(); System.out.println("Using FastJson"); catch (ReflectiveOperationException e) { System.out.println("Oops, we need a fallback!");
71 Optional dependencies Better yet: use services for optional dependencies module framework { requires json.api; uses json.api.json; ServiceLoader.load(Json.class).stream().filter(this::isFast).findFirst();
72 Layers and dynamic module loading
73 ModuleLayer Module path mods easytext.algorithm.api easytext.algorithm.coleman easytext.algorithm.kincaid easytext.algorithm.naivesyllablecounter easytext.algorithm.nextgensyllablecounter easytext.cli easytext.gui
74 ModuleLayer Module path mods easytext.algorithm.api easytext.algorithm.coleman easytext.algorithm.kincaid easytext.algorithm.naivesyllablecounter easytext.algorithm.nextgensyllablecounter easytext.cli easytext.gui boot layer api coleman... at run-time kincaid gui
75 ModuleLayer Immutable boot layer App & platform modules api coleman... One version of a module kincaid gui No dynamic loading?
76 ModuleLayer boot layer Create layers at run-time api Layers form hierarchy... gui Multiple versions in layers
77 ModuleLayer layer 1 coleman parent boot layer Create layers at run-time api Layers form hierarchy... gui Multiple versions in layers
78 ModuleLayer layer 1 coleman layer 2 kincaid syllable. counter parent parent Create layers at run-time api boot layer Layers form hierarchy... gui Multiple versions in layers
79 ModuleLayer Demo
80 Thank you. Paul Sander
Migrating to Java 9 Modules
Migrating to Java 9 Modules By Sander Mak @Sander_Mak Migrating to Java 9 Java 8 java -cp.. -jar myapp.jar Java 9 java -cp.. -jar myapp.jar Today's journey Running on Java 9 Java 9 modules Migrating to
More informationMigrating to Java 9 Modules. Paul Bakker
Migrating to Java 9 Modules Paul Bakker Why care about modules? lib/nebula-4.0.12.jar:lib/netflix-gradle-lint-8.6.1.jar:lib/gretty-2.0.0.jar:lib/gradle-infamous-plugin-1.28.jar:lib/java-semver-0.9.0.jar:lib/guava-20.0.jar:lib/
More informationPASS4TEST IT 인증시험덤프전문사이트
PASS4TEST IT 인증시험덤프전문사이트 http://www.pass4test.net 일년동안무료업데이트 Exam : 1z0-809 Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z0-809 Exam's Question and Answers 1 from
More informationBig Modular Java with Guice
Big Modular Java with Guice Jesse Wilson Dhanji Prasanna May 28, 2009 Post your questions for this talk on Google Moderator: code.google.com/events/io/questions Click on the Tech Talks Q&A link. 2 How
More informationJigsaw and OSGi: What the Heck Happens Now?
Jigsaw and OSGi: What the Heck Happens Now? Neil Bartlett neil.bartlett@paremus.com Jigsaw and OSGi: WTF Happens Now? Neil Bartlett neil.bartlett@paremus.com Agenda WTF is a Module System? How do OSGi
More informationIndex. Decomposability, 13 Deep reflection, 136 Dependency hell, 19 --describe-module, 39
Index A --add-exports option, 28, 134 136, 142, 192 Apache Maven compatibility, 214 Compiler plugin, 212, 214 goals, 209 JDeps plugin goals, 210 options, 211 JEP 223 New Version-String scheme, 209 Automatic
More informationJAVA Modules Java, summer semester 2018
JAVA Modules Modules a module explicitely defines what is provided but also what is required why? the classpath concept is fragile no encapsulation 2 Modules a module explicitely defines what is provided
More informationDependency Injection & Design Principles Recap Reid Holmes
Material and some slide content from: - Krzysztof Czarnecki - Ian Sommerville - Head First Design Patterns Dependency Injection & Design Principles Recap Reid Holmes REID HOLMES - SE2: SOFTWARE DESIGN
More informationPatterns and Best Practices for dynamic OSGi Applications
Patterns and Best Practices for dynamic OSGi Applications Kai Tödter, Siemens Corporate Technology Gerd Wütherich, Freelancer Martin Lippert, akquinet it-agile GmbH Agenda» Dynamic OSGi applications» Basics»
More informationLecture 3. COMP1006/1406 (the Java course) Summer M. Jason Hinek Carleton University
Lecture 3 COMP1006/1406 (the Java course) Summer 2014 M. Jason Hinek Carleton University today s agenda assignments 1 (graded) & 2 3 (available now) & 4 (tomorrow) a quick look back primitive data types
More informationECE 122. Engineering Problem Solving with Java
ECE 122 Engineering Problem Solving with Java Lecture 17 Inheritance Overview Problem: Can we create bigger classes from smaller ones without having to repeat information? Subclasses: a class inherits
More informationDependency Injection with Guice
Author: Assaf Israel - Technion 2013 Dependency Injection with Guice Technion Institute of Technology 236700 1 Complex Dependency Injection Deep dependencies (with no default) A depends on B, which depends
More informationModular Java EE in the cloud
Modular Java EE in the cloud A practical guide to mixing java EE and OSGi Jfokus 2013 Practical Guide to Modularity in the Cloud Age Jfokus 2013 Bert Ertman Fellow at Luminis in the Netherlands JUG Leader
More informationAgenda. Why OSGi. What is OSGi. How OSGi Works. Apache projects related to OSGi Progress Software Corporation. All rights reserved.
OSGi Overview freeman.fang@gmail.com ffang@apache.org Apache Servicemix Commiter/PMC member Apache Cxf Commiter/PMC member Apache Karaf Commiter/PMC member Apache Felix Commiter Agenda Why OSGi What is
More informationDependency Injection & Design Principles Recap Reid Holmes
Material and some slide content from: - Krzysztof Czarnecki - Ian Sommerville - Head First Design Patterns Dependency Injection & Design Principles Recap Reid Holmes REID HOLMES - SE2: SOFTWARE DESIGN
More informationProject Jigsaw: Modular services
Project Jigsaw: Modular services Jigsaw team 12 June 2012 Copyright 2012 Oracle and/or its affiliates All rights reserved 1 Terms Service interface: An interface or class Service interface module: A module
More informationObject-Oriented Design
Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration
More informationOOPs Concepts. 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8.
OOPs Concepts 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8. Type Casting Let us discuss them in detail: 1. Data Hiding: Every
More informationDesign patterns using Spring and Guice
Design patterns using Spring and Guice Dhanji R. Prasanna MANNING contents 1 Dependency 2 Time preface xv acknowledgments xvii about this book xix about the cover illustration xxii injection: what s all
More informationDay 4. COMP1006/1406 Summer M. Jason Hinek Carleton University
Day 4 COMP1006/1406 Summer 2016 M. Jason Hinek Carleton University today s agenda assignments questions about assignment 2 a quick look back constructors signatures and overloading encapsulation / information
More informationWhat is Inheritance?
Inheritance 1 Agenda What is and Why Inheritance? How to derive a sub-class? Object class Constructor calling chain super keyword Overriding methods (most important) Hiding methods Hiding fields Type casting
More informationCertified Core Java Developer VS-1036
VS-1036 1. LANGUAGE FUNDAMENTALS The Java language's programming paradigm is implementation and improvement of Object Oriented Programming (OOP) concepts. The Java language has its own rules, syntax, structure
More informationBBM 102 Introduction to Programming II Spring Abstract Classes and Interfaces
BBM 102 Introduction to Programming II Spring 2017 Abstract Classes and Interfaces 1 Today Abstract Classes Abstract methods Polymorphism with abstract classes Example project: Payroll System Interfaces
More informationGuice. Java DI Framework
Guice Java DI Framework Agenda Intro to dependency injection Cross-cutting concerns and aspectoriented programming More Guice What is DI? Dependency injection is a design pattern that's like a "super factory".
More informationКирилл Розов Android Developer
Кирилл Розов Android Developer Dependency Injection Inversion of Control (IoC) is a design principle in which custom-written portions of a computer program receive the flow of control from a generic framework
More informationThe GoF Design Patterns Reference
The GoF Design Patterns Reference Version.0 / 0.0.07 / Printed.0.07 Copyright 0-07 wsdesign. All rights reserved. The GoF Design Patterns Reference ii Table of Contents Preface... viii I. Introduction....
More informationBBM 102 Introduction to Programming II Spring 2017
BBM 102 Introduction to Programming II Spring 2017 Abstract Classes and Interfaces Instructors: Ayça Tarhan, Fuat Akal, Gönenç Ercan, Vahid Garousi Today Abstract Classes Abstract methods Polymorphism
More informationDay 3. COMP 1006/1406A Summer M. Jason Hinek Carleton University
Day 3 COMP 1006/1406A Summer 2016 M. Jason Hinek Carleton University today s agenda assignments 1 was due before class 2 is posted (be sure to read early!) a quick look back testing test cases for arrays
More informationJava Class Design. Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding
Java Class Design Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Objectives Implement encapsulation Implement inheritance
More informationProgramming Language Concepts Object-Oriented Programming. Janyl Jumadinova 28 February, 2017
Programming Language Concepts Object-Oriented Programming Janyl Jumadinova 28 February, 2017 Three Properties of Object-Oriented Languages: Encapsulation Inheritance Dynamic method binding (polymorphism)
More informationCore Java - SCJP. Q2Technologies, Rajajinagar. Course content
Core Java - SCJP Course content NOTE: For exam objectives refer to the SCJP 1.6 objectives. 1. Declarations and Access Control Java Refresher Identifiers & JavaBeans Legal Identifiers. Sun's Java Code
More informationClasses and Objects 3/28/2017. How can multiple methods within a Java class read and write the same variable?
Peer Instruction 8 Classes and Objects How can multiple methods within a Java class read and write the same variable? A. Allow one method to reference a local variable of the other B. Declare a variable
More informationJUNIT 5 EXTENSIONS 1. 1
JUNIT EXTENSIONS 1. 1 MARC PHILIPP Software Engineer @ LogMeIn in Karlsruhe, Germany JUnit Maintainer since 2012 Twitter: @marcphilipp Web: marcphilipp.de 1. 2 JUNIT IS RELEASED! Release date: September
More information1. Find the output of following java program. class MainClass { public static void main (String arg[])
1. Find the output of following java program. public static void main(string arg[]) int arr[][]=4,3,2,1; int i,j; for(i=1;i>-1;i--) for(j=1;j>-1;j--) System.out.print(arr[i][j]); 1234 The above java program
More informationDesign Patterns. Dependency Injection. Oliver Haase
Design Patterns Dependency Injection Oliver Haase 1 Motivation A simple, motivating example (by Martin Fowler): public interface MovieFinder { /** * returns all movies of this finder s source * @return
More informationI Got My Mojo Workin'
I Got My Mojo Workin' Gary Murphy Hilbert Computing, Inc. http://www.hilbertinc.com/ glm@hilbertinc.com Gary Murphy I Got My Mojo Workin' Slide 1 Agenda Quick overview on using Maven 2 Key features and
More informationCS/B.TECH/CSE(New)/SEM-5/CS-504D/ OBJECT ORIENTED PROGRAMMING. Time Allotted : 3 Hours Full Marks : 70 GROUP A. (Multiple Choice Type Question)
CS/B.TECH/CSE(New)/SEM-5/CS-504D/2013-14 2013 OBJECT ORIENTED PROGRAMMING Time Allotted : 3 Hours Full Marks : 70 The figures in the margin indicate full marks. Candidates are required to give their answers
More information2.8. Decision Making: Equality and Relational Operators
Page 1 of 6 [Page 56] 2.8. Decision Making: Equality and Relational Operators A condition is an expression that can be either true or false. This section introduces a simple version of Java's if statement
More informationAbstract Classes and Interfaces
Abstract Classes and Interfaces Reading: Reges and Stepp: 9.5 9.6 CSC216: Programming Concepts Sarah Heckman 1 Abstract Classes A Java class that cannot be instantiated, but instead serves as a superclass
More informationLiberate your components with OSGi services
Liberate your components with OSGi services One products journey through the Modularity Maturity Model Alasdair Nottingham (not@uk.ibm.com) WebSphere Application Server V8.5 Liberty Profile Development
More informationObject-Oriented Design
Object-Oriented Design Lecturer: Raman Ramsin Lecture 10: Analysis Packages 1 Analysis Workflow: Packages The analysis workflow consists of the following activities: Architectural analysis Analyze a use
More informationSpring Framework 5.0 on JDK 8 & 9
Spring Framework 5.0 on JDK 8 & 9 Juergen Hoeller Spring Framework Lead Pivotal 1 Spring Framework 5.0 (Overview) 5.0 GA as of September 28 th, 2017 one week after JDK 9 GA! Embracing JDK 9 as well as
More information8.1 Inheritance. 8.1 Class Diagram for Words. 8.1 Words.java. 8.1 Book.java 1/24/14
8.1 Inheritance superclass 8.1 Class Diagram for Words! Inheritance is a fundamental technique used to create and organize reusable classes! The child is- a more specific version of parent! The child inherits
More informationWeek 5-1: ADT Design
Week 5-1: ADT Design Part1. ADT Design Define as class. Every obejects are allocated in heap space. Encapsulation : Data representation + Operation Information Hiding : Object's representation part hides,
More informationSeasar2.3. Yasuo Higa Seasar Foundation/Chief Committer Translated by:h.ozawa
Seasar2.3 Yasuo Higa Seasar Foundation/Chief Committer http://www.seasar.org/en 1 I want to ask this question to every developer in the world, DO YOU REALLY WANT TO WRITE CONFIGURATION FILES? Seasar2 saves
More informationCPSC 324 Topics in Java Programming
CPSC 324 Topics in Java Programming Lecture 24 Today Final exam review Java packages and jar files Reminder Group projects on Thursday! Reading Assignment Core: Ch. 10 pp. 493-500 (Jar files) Core: Ch.
More informationA final method is a method which cannot be overridden by subclasses. A class that is declared final cannot be inherited.
final A final variable is a variable which can be initialized once and cannot be changed later. The compiler makes sure that you can do it only once. A final variable is often declared with static keyword
More informationLecture 7: Classes and Objects CS2301
Lecture 7: Classes and Objects NADA ALZAHRANI CS2301 1 What is OOP? Object-oriented programming (OOP) involves programming using objects. An object represents an entity in the real world that can be distinctly
More informationInterfaces (1/2) An interface forms a contract between the object and the outside world.
Interfaces (1/2) An interface forms a contract between the object and the outside world. For example, the buttons on remote controls for some machine. As you can see, an interface is a reference type,
More informationChallenges updating your code to work with Java 9 Jigsaw
Challenges updating your code to work with Java 9 Jigsaw Uwe Schindler Apache Lucene PMC & Apache Software Foundation Member uschindler@apache.org https://www.thetaphi.de, http://blog.thetaphi.de @ThetaPh1
More informationInterfaces. An interface forms a contract between the object and the outside world.
Interfaces An interface forms a contract between the object and the outside world. For example, the buttons on the television set are the interface between you and the electrical wiring on the other side
More informationPieter van den Hombergh Thijs Dorssers Stefan Sobek. February 10, 2017
Inheritance and Inheritance and Pieter van den Hombergh Thijs Dorssers Stefan Sobek Fontys Hogeschool voor Techniek en Logistiek February 10, 2017 /FHTenL Inheritance and February 10, 2017 1/45 Topics
More informationIntroduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt www.introsoftwaretesting.com OO Software and Designs Emphasis on modularity and reuse puts complexity
More informationPieter van den Hombergh Thijs Dorssers Stefan Sobek. January 11, 2018
Inheritance and Inheritance and Pieter van den Hombergh Thijs Dorssers Stefan Sobek Java Inheritance Example I Visibility peekabo Constructors Fontys Hogeschool voor Techniek en Logistiek January 11, 2018
More informationObject Oriented Programming is a programming method that combines: Advantage of Object Oriented Programming
Overview of OOP Object Oriented Programming is a programming method that combines: a) Data b) Instructions for processing that data into a self-sufficient object that can be used within a program or in
More informationAdmin. CS 112 Introduction to Programming. Recap: OOP Analysis. Software Design and Reuse. Recap: OOP Analysis. Inheritance
Admin CS 112 Introduction to Programming q Class project Inheritance Yang (Richard) Yang Computer Science Department Yale University 308A Watson, Phone: 432-6400 Email: yry@cs.yale.edu 2 Recap: OOP Analysis
More informationJava Object Oriented Design. CSC207 Fall 2014
Java Object Oriented Design CSC207 Fall 2014 Design Problem Design an application where the user can draw different shapes Lines Circles Rectangles Just high level design, don t write any detailed code
More informationChapter 5. Inheritance
Chapter 5 Inheritance Objectives Know the difference between Inheritance and aggregation Understand how inheritance is done in Java Learn polymorphism through Method Overriding Learn the keywords : super
More information15CS45 : OBJECT ORIENTED CONCEPTS
15CS45 : OBJECT ORIENTED CONCEPTS QUESTION BANK: What do you know about Java? What are the supported platforms by Java Programming Language? List any five features of Java? Why is Java Architectural Neutral?
More informationArchitecture using Functional Programming concepts < + >
Architecture using Functional Programming concepts < + > Jorge Castillo @JorgeCastilloPr 1 2 Kotlin and Functional Programming FP means concern separation (declarative computations vs runtime execution),
More informationCSE 421 Course Overview and Introduction to Java
CSE 421 Course Overview and Introduction to Java Computer Science and Engineering College of Engineering The Ohio State University Lecture 1 Learning Objectives Knowledgeable in how sound software engineering
More informationSystems Programming. Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid
Systems Programming Bachelor in Telecommunication Technology Engineering Bachelor in Communication System Engineering Carlos III University of Madrid Leganés, 21st of March, 2014. Duration: 75 min. Full
More informationOSGi on the Server. Martin Lippert (it-agile GmbH)
OSGi on the Server Martin Lippert (it-agile GmbH) lippert@acm.org 2009 by Martin Lippert; made available under the EPL v1.0 October 6 th, 2009 Overview OSGi in 5 minutes Apps on the server (today and tomorrow)
More informationObject-Oriented Concepts and Design Principles
Object-Oriented Concepts and Design Principles Signature Specifying an object operation or method involves declaring its name, the objects it takes as parameters and its return value. Known as an operation
More informationJava Fundamentals (II)
Chair of Software Engineering Languages in Depth Series: Java Programming Prof. Dr. Bertrand Meyer Java Fundamentals (II) Marco Piccioni static imports Introduced in 5.0 Imported static members of a class
More informationCS111: PROGRAMMING LANGUAGE II
1 CS111: PROGRAMMING LANGUAGE II Computer Science Department Lecture 8(b): Abstract classes & Polymorphism Lecture Contents 2 Abstract base classes Concrete classes Polymorphic processing Dr. Amal Khalifa,
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationObject Oriented Programming. Java-Lecture 11 Polymorphism
Object Oriented Programming Java-Lecture 11 Polymorphism Abstract Classes and Methods There will be a situation where you want to develop a design of a class which is common to many classes. Abstract class
More informationAppendix: Assorted Sweets
Appendix: Assorted Sweets You re probably looking at this page right now because I referred you to it earlier in this book. While writing, I had to decide which examples fit in this book and which don
More informationAtelier Java - J2. Marwan Burelle. EPITA Première Année Cycle Ingénieur.
marwan.burelle@lse.epita.fr http://wiki-prog.kh405.net Plan 1 2 Plan 1 2 Notions of interfaces describe what an object must provide without describing how. It extends the types name strategy to provide
More informationRyerson University Department of Electrical & Computer Engineering COE618 Midterm Examination February 26, 2013
Ryerson University Department of Electrical & Computer Engineering COE618 Midterm Examination February 26, 2013 Name: Student # : Time: 90 minutes Instructions This exam contains 6 questions. Please check
More informationInheritance and Interfaces
Inheritance and Interfaces Object Orientated Programming in Java Benjamin Kenwright Outline Review What is Inheritance? Why we need Inheritance? Syntax, Formatting,.. What is an Interface? Today s Practical
More informationINF 212 ANALYSIS OF PROG. LANGS PLUGINS. Instructors: Crista Lopes Copyright Instructors.
INF 212 ANALYSIS OF PROG. LANGS PLUGINS Instructors: Crista Lopes Copyright Instructors. Modules as conceptual units Modules as physical components Software modules as physical components Source components
More informationOSGi in Action. RICHARD S. HALL KARL PAULS STUART McCULLOCH DAVID SAVAGE CREATING MODULAR APPLICATIONS IN JAVA MANNING. Greenwich (74 w. long.
OSGi in Action CREATING MODULAR APPLICATIONS IN JAVA RICHARD S. HALL KARL PAULS STUART McCULLOCH DAVID SAVAGE 11 MANNING Greenwich (74 w. long.) contents foreword xiv preface xvii acknowledgments xix about
More informationSpring % of course grade
Name SOLUTION Final Score 10 ID Extra Credit Section (circle one): MW 8:30-9:50 TTh 9:30-10:50 TTh 11:00-12:20 10% of course grade 2 1. Anonymous Inner Classes In lecture we walked through the following:
More informationFormatting Output & Enumerated Types & Wrapper Classes
Formatting Output & Enumerated Types & Wrapper Classes Quick review of last lecture September 8, 2006 ComS 207: Programming I (in Java) Iowa State University, FALL 2006 Instructor: Alexander Stoytchev
More informationDay 2. COMP 1006/1406A Summer M. Jason Hinek Carleton University
Day 2 COMP 1006/1406A Summer 2016 M. Jason Hinek Carleton University today s agenda a quick look back (Monday s class) assignments a1 is due on Monday a2 will be available on Monday and is due the following
More informationInheritance. Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L
Inheritance Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L 9.1 9.4 1 Inheritance Inheritance allows a software developer to derive
More informationOutline. Object Oriented Programming. Course goals. Staff. Course resources. Assignments. Course organization Introduction Java overview Autumn 2003
Outline Object Oriented Programming Autumn 2003 2 Course goals Software design vs hacking Abstractions vs language (syntax) Java used to illustrate concepts NOT a course about Java Prerequisites knowledge
More informationCS410J: Advanced Java Programming
CS410J: Advanced Java Programming The Dependency Injection design pattern decouples dependent objects so that they may be configured and tested independently. Google Guice manages dependencies among objects
More informationCOMP6700/2140 Packages, Modules and Jigsaw
COMP6700/2140 Packages, Modules and Jigsaw Alexei B Khorev and Josh Milthorpe Research School of Computer Science, ANU May 2017 Alexei B Khorev and Josh Milthorpe (RSCS, ANU) COMP6700/2140 Packages, Modules
More informationProgramming overview
Programming overview Basic Java A Java program consists of: One or more classes A class contains one or more methods A method contains program statements Each class in a separate file MyClass defined in
More informationInheritance. Unit 8. Summary. 8.1 Inheritance. 8.2 Inheritance: example. Inheritance Overriding of methods and polymorphism The class Object
Unit 8 Inheritance Summary Inheritance Overriding of methods and polymorphism The class Object 8.1 Inheritance Inheritance in object-oriented languages consists in the possibility of defining a class that
More informationClasses, Objects, and OOP in Java. June 16, 2017
Classes, Objects, and OOP in Java June 16, 2017 Which is a Class in the below code? Mario itsame = new Mario( Red Hat? ); A. Mario B. itsame C. new D. Red Hat? Whats the difference? int vs. Integer A.
More informationJava 9 Module System. Complex Software and Programming Language History of Modules Module Concepts and Tools Modularization of the JDK
Java 9 Module System Complex Software and Programming Language History of Modules Module Concepts and Tools Modularization of the JDK Problem of Complexity and Programming Language 2 von 41 Early/Modern
More informationThe most common relationships are: dependency, association, generalization, and realization.
UML Class Diagram A class diagram describes the structure of an object-oriented system by showing the classes (and interfaces) in that system and the relationships between the classes (and interfaces).
More informationC08: Inheritance and Polymorphism
CISC 3120 C08: Inheritance and Polymorphism Hui Chen Department of Computer & Information Science CUNY Brooklyn College 2/26/2018 CUNY Brooklyn College 1 Outline Recap and issues Project progress? Practice
More informationThink of drawing/diagramming editors. ECE450 Software Engineering II. The problem. The Composite pattern
Think of drawing/diagramming editors ECE450 Software Engineering II Drawing/diagramming editors let users build complex diagrams out of simple components The user can group components to form larger components......which
More informationMicroservices Implementations not only with Java. Eberhard Wolff Fellow
Microservices Implementations not only with Java Eberhard Wolff http://ewolff.com @ewolff Fellow http://continuous-delivery-buch.de/ http://continuous-delivery-book.com/ http://microservices-buch.de/ http://microservices-book.com/
More informationSelenium Testing Course Content
Selenium Testing Course Content Introduction What is automation testing? What is the use of automation testing? What we need to Automate? What is Selenium? Advantages of Selenium What is the difference
More informationOBJECTS AND CLASSES CHAPTER. Final Draft 10/30/2011. Slides by Donald W. Smith TechNeTrain.com
CHAPTER 8 OBJECTS AND CLASSES Slides by Donald W. Smith TechNeTrain.com Final Draft 10/30/2011 Chapter Goals To understand the concepts of classes, objects and encapsulation To implement instance variables,
More informationPolymorphism. Agenda
Polymorphism Lecture 11 Object-Oriented Programming Agenda Classes and Interfaces The Object Class Object References Primitive Assignment Reference Assignment Relationship Between Objects and Object References
More informationA- Core Java Audience Prerequisites Approach Objectives 1. Introduction
OGIES 6/7 A- Core Java The Core Java segment deals with the basics of Java. It is designed keeping in mind the basics of Java Programming Language that will help new students to understand the Java language,
More informationFunctions. x y z. f (x, y, z) Take in input arguments (zero or more) Perform some computation - May have side-effects (such as drawing)
2.1 Functions Functions Take in input arguments (zero or more) Perform some computation - May have side-effects (such as drawing) Return one output value Input Arguments x y z f Return Value f (x, y, z)
More informationCSCU9T4: Managing Information
CSCU9T4: Managing Information CSCU9T4 Spring 2016 1 The Module Module co-ordinator: Dr Gabriela Ochoa Lectures by: Prof Leslie Smith (l.s.smith@cs.stir.ac.uk) and Dr Nadarajen Veerapen (nve@cs.stir.ac.uk)
More informationCS 112 Introduction to Programming
CS 112 Introduction to Programming Inheritance Hierarchy; Polymorphism Yang (Richard) Yang Computer Science Department Yale University 308A Watson, Phone: 432-6400 Email: yry@cs.yale.edu Admin q Class
More informationAdmin. q Admin and recap q Class inheritance
Admin CS 112 Introduction to Programming q Class project Please work on forming teams Inheritance Hierarchy; Polymorphism Yang (Richard) Yang Computer Science Department Yale University 308A Watson, Phone:
More informationCS304 Object Oriented Programming Final Term
1. Which of the following is the way to extract common behaviour and attributes from the given classes and make a separate class of those common behaviours and attributes? Generalization (pg 29) Sub-typing
More informationCS 106A, Lecture 25 Life After CS 106A, Part 1
CS 106A, Lecture 25 Life After CS 106A, Part 1 This document is copyright (C) Stanford Computer Science and Marty Stepp, licensed under Creative Commons Attribution 2.5 License. All rights reserved. Based
More informationSimple Java Programs. OOC 4 th Sem, B Div Prof. Mouna M. Naravani
Simple Java Programs OOC 4 th Sem, B Div 2016-17 Prof. Mouna M. Naravani /* */ A First Simple Program This is a simple Java program. Call this file "Example.java". class Example { } // Your program begins
More information