Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

34
Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML

Transcript of Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Page 1: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Introduction to Java 2 Programming

Lecture 1

Java, Principles of OO, UML

Page 2: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Overview

• Introducing Java– Key features of the language

• Principles of Object Oriented Programming– What is OOP? Why is it important?– Basic principles and advantages

• The Unified Modelling Language– UML Class Diagrams

Page 3: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Some History

• Developed and maintained by Sun Microsystems– Originally called Oak

– Aimed at producing an operating environment for networked devices and embedded systems

– …but has been much more successful

• Design objectives for the language– Simple, object-oriented,

– Distributed, multi-threaded, and platform neutral

– Robust, secure, scaleable

Page 4: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

The Virtual Machine

• Java is both compiled and interpreted– Source code is compiled into Java bytecode

– Which is then interpreted by the Java Virtual Machine (JVM)

– Therefore bytecode is machine code for the JVM

• Java bytecode can run on any JVM, on any platform– …including mobile phones and other hand-held devices

• Networking and distribution are core features– In other languages these are additional APIs

– Makes Java very good for building networked applications, server side components, etc.

Page 5: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Features of the JVM

• The Garbage Collector– Java manages memory for you, the developer has no control over

the allocation of memory (unlike in C/C++).

– This is much simpler and more robust (no chance of memory leaks or corruption)

– Runs in the background and cleans up memory while application is running

• The Just In Time compiler (JIT)– Also known as “Hot Spot”

– Continually optimises running code to improve performance

– Can approach the speed of C++ even though its interpreted

Page 6: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Features of the JVM

• Security– Java offers very fine control over what an application is allowed to

do– E.g. Read/write files, open sockets to remote machines, discover

information about the users environment, etc– Used in Java Applets to create a “sandbox”. Stops a rogue applet

attacking your machine.– Makes Java very safe, an important feature in distributed systems

• Class Loading– Loading of bytecode into the virtual machine for execution– Code can be read from a local disk, over a network, or the Internet– Allows downloading of applications and applets on the fly– …and even ‘mobile code’

Page 7: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Versions of Java• Java Language vs Java Platform

– Current version of the language is 1.4.1– Core language plus additional APIs is called the Java 2 platform– Three versions of the Java 2 Platform, targetted at different uses

• Java 2 Micro Edition (J2ME)– Very small Java environment for smart cards, pages, phones, and

set-top boxes– Subset of the standard Java libraries aimed at limited size and

processing power

• Java 2 Standard Edition (J2SE)– The basic platform, which this course will cover

• Java 2 Enterprise Edition (J2EE)– For business applications, web services, mission-critical systems– Transaction processing, databases, distribution, replication

Page 8: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

The Java APIs

• Sun are constantly adding new features and APIs• The Core Java API is now very large

– Often difficult to keep up with every change

• Separate set of extension APIs for specific purposes– E.g. Telephony, Web applications, Game programming

• All new developments reviewed through Java Community Process (http://www.jcp.org)– Chance for developers to provide feedback on emerging standards

and APIs– Useful to keep an eye on what's coming through

• Also a wide range of “open source“ APIs available– E.g. through the Jakarta project (http://jakarta.apache.org)

Page 9: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Useful Resources

• Useful resources on the web

• Java home (http://java.sun.com)– Articles, Software and document downloads, Tutorials

• Java Developer Services http://developer.java.sun.com– Early access downloads, forums, newsletters, bug database

• Javaworld (http://www.javaworld.com)– Java magazine site, good set of articles and tutorials

• IBM developerWorks (http://www.ibm.com/developerWorks)– Technology articles and tutorials

Page 10: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

• Introducing Java– Key features of the language

• Principles of Object Oriented Programming– What is OOP?– Why is it important?

• The Unified Modelling Language– UML Class Diagrams

Page 11: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Object-Oriented Programming

• Understanding OOP is fundamental to writing good Java applications– Improves design of your code

– Improves understanding of the Java APIs

• There are several concepts underlying OOP:– Abstract Types (Classes)

– Encapsulation (or Information Hiding)

– Aggregation

– Inheritance

– Polymorphism

Page 12: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

What is OOP?

• Modelling real-world objects in software• Why design applications in this way?

– We naturally classify objects into different types.– By attempting to do this with software aim to make it

more maintainable, understandable and easier to reuse

• In a conventional application we typically:– decompose it into a series of functions, – define data structures that those functions act upon– there is no relationship between the two other than the

functions act on the data

Page 13: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

What is OOP?

• How is OOP different to conventional programming?– Decompose the application into abstract data types by

identifying some useful entities/abstractions

– An abstract type is made up of a series of behaviours and the data that those behaviours use.

• Similar to database modelling, only the types have both behaviour and state (data)

Page 14: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Abstract Data Types

• Identifying abstract types is part of the modelling/design process– The types that are useful to model may vary according to the individual

application– For example a payroll system might need to know about Departments,

Employees, Managers, Salaries, etc– An E-Commerce application may need to know about Users, Shopping

Carts, Products, etc

• Object-oriented languages provide a way to define abstract data types, and then create objects from them

– It’s a template (or ‘cookie cutter’) from which we can create new objects– For example, a Car class might have attributes of speed, colour, and behaviours of

accelerate, brake, etc– An individual Car object will have the same behaviours but its own values

assigned to the attributes (e.g. 30mph, Red, etc)

Page 15: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

"O O P rogram m ing" --Abs trac t T ypes c om bine data and behaviour

- - - - -- - - - -- - - - -- - - - -

- - - - -- - - - -- - - - -- - - - -

- - - - -- - - - -- - - - -- - - - -

"Conventional P rogram m ing" --F unc tions or P roc edures operating on independent data

Page 16: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Encapsulation

• The data (state) of an object is private – it cannot be accessed directly.

• The state can only be changed through its behaviour, otherwise known as its public interface or contract

• This is called encapsulation

P rivate D ata

P ublic In terfac e

"T he D oughnut D iagram "S how ing that an objec t haspr ivate s tate and publicbehaviour . S tate c an only bec hanged by invoking s om ebehaviour

Page 17: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Encapsulation

• Main benefit of encapsulation– Internal state and processes can be changed independently of the

public interface

– Limits the amount of large-scale changes required to a system

Page 18: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

What is an OO program?

• What does an OO program consist of?– A series of objects that use each others behaviours in order to

carry out some desired functionality– When one object invokes some behaviour of another it sends it a

message– In Java terms it invokes a method of the other object– A method is the implementation of a given behaviour.

• OO programs are intrinsically modular– Objects are only related by their public behaviour (methods)– Therefore objects can be swapped in and out as required (e.g. for a

more efficient version)– This is another advantage of OO systems

Page 19: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Aggregation

• Aggregation is the ability to create new classes out of existing classes– Treating them as building blocks or components

• Aggregation allows reuse of existing code– “Holy Grail” of software engineering

• Two forms of aggregation• Whole-Part relationships

– Car is made of Engine, Chassis, Wheels

• Containment relationships– A Shopping Cart contains several Products– A List contains several Items

Page 20: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Inheritance

• Inheritance is the ability to define a new class in terms of an existing class– The existing class is the parent, base or superclass

– The new class is the child, derived or subclass

• The child class inherits all of the attributes and behaviour of its parent class– It can then add new attributes or behaviour

– Or even alter the implementation of existing behaviour

• Inheritance is therefore another form of code reuse

Page 21: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Polymorphism

• Means ‘many forms’

• Difficult to describe, easier to show, so we’ll look at this one in a later lesson

• In brief though, polymorphism allows two different classes to respond to the same message in different ways

• E.g. both a Plane and a Car could respond to a ‘turnLeft’ message, – however the means of responding to that message (turning wheels,

or banking wings) is very different for each.

• Allows objects to be treated as if they’re identical

Page 22: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Summary!

• In OO programming we– Define classes

– Create objects from them

– Combine those objects together to create an application

• Benefits of OO programming– Easier to understand (closer to how we view the world)

– Easier to maintain (localised changes)

– Modular (classes and objects)

– Good level of code reuse (aggregation and inheritance)

Page 23: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Overview

• Introducing Java– Key features of the language

• Principles of Object Oriented Programming– What is OOP?– Why is it important?

• The Unified Modelling Language– UML Class Diagrams

Page 24: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Unified Modelling Language

• UML is a diagramming tool for describing and documenting object oriented applications

• Programming language independent

• Used for modelling an application before its engineered

• Twelve different diagrams in all, with many complex details

• Generally though only two of these are used regularly– Class diagrams

– Sequence diagrams

Page 25: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Unified Modelling Language

• Class Diagrams– Describe classes and interfaces

– …their properties

– …their public interface

– …and their relationships (e.g. inheritance, aggregation)

• Sequence Diagrams– Describe how objects send messages to one another

– Useful for describing how a particular part of an application works

• We’ll be covering just class diagrams– Very useful for describing APIs and discussing OO applications

Page 26: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

UML -- Classes

• Box with 3 sections

• The top contains the class name

• The middle lists the classes attributes

• The bottom lists the classes methods

• Can indicate parameters and return types to methods, as well as their visibility

Page 27: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

UML -- Association

• A line between two classes indicates a relationship

• Extra information can be added to describe the relationship

• Including– Its name– The roles that the classes play– The cardinality of the

relationship (how many objects are involved)

• E.g. a Person worksFor a Company, which has many employees

Page 28: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

UML -- Comments

• Useful for adding text for the readers of your diagram

• The symbol looks like a little post-it note, with a dotted line joining it to the class or relationship that its describing

Page 29: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

UML -- Aggregation

• Aggregation (a whole-part relationship) is shown by a line with clear diamond.

• As aggregation is a form of relationship you can also add the usual extra information

• I.e.– Name

– Roles

– Cardinality

Page 30: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

UML -- Inheritance

• Inheritance is shown by a solid arrow from the sub-class to the super-class

• The sub-class doesn’t list its super-class attributes or methods,

• unless its providing its own alternate version (I.e. is extending the behaviour of the base class)

Page 31: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

UML -- Interfaces

• Interfaces are a way to specify behaviour (a public contract) without data or implementation.

• Interfaces are classed with an extra label next to their name: <<Interface>>

• A dotted arrow from a class to an interface explains that the class fulfills the contract specified by that interface

Page 32: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Example #1

Page 33: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Example #2

Page 34: Introduction to Java 2 Programming Lecture 1 Java, Principles of OO, UML.

Example #3