Download Introduction to Java and OOP

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Introduction to Java and OOP
Hendrik Speleers
Introduction to Java
●
●
Additional course material
–
“Thinking in JAVA” (4th edition) by Bruce Eckel
–
Free download of older editions: http://mindview.net/Books/TIJ4
Java programming
–
Java Development Kit (JDK) from Oracle
●
●
●
–
Includes Java Runtime Environment (JRE) to run Java programs
Includes tools for Java development
Free download: http://www.oracle.com
Java Integrated Development Environment (IDE)
●
●
Eclipse: very powerful and user friendly IDE
Free download: https://eclipse.org/ide/
NMCGJ
2016-2017
Introduction to Java
●
Programming
–
Part of the software development process
Problem
Problemdefinition
definition
and
andanalysis
analysis
Programming
Programming
Design
Design
(code
(code/ /test
test/debug)
/debug)
TARGET
●
Abstraction: problem space vs. solution space
NMCGJ
2016-2017
Introduction to Java
●
Programming languages: level of abstraction
–
Low-level programming language
●
●
–
Easy conversion to machine code
Relatively non-portable
Solution space
(machine)
abstraction:
move away from machine
simplify problem description
High-level programming language
●
●
Higher abstraction: in need of compiler
More readable, more portable
–
Structured: Pascal, C, …
–
Object-oriented: C++, Java
●
Problem space
(what do you want?)
Describe problem in terms of problem elements: OBJECTS
NMCGJ
2016-2017
Introduction to Java
●
Java
–
Developed at Sun Microsystems (now Oracle)
●
First intended for programs in small devices
●
Based on C and C++
–
Two types of Java programs: applications – applets
–
Platform independent: highly portable
–
●
Java code (*.java) is compiled to byte code (*.class)
●
Byte code is executed in Java Virtual Machine (JVM)
Java’s logo and mascot (Duke)
Slower but more user-friendly than C/C++
●
Memory management: garbage collector
NMCGJ
2016-2017
Objects and Classes
●
Alan Kay's 5 rules for Object-Oriented Programming (OOP)
–
Everything is an object
●
–
A program is a bunch of communicating objects
●
–
An object is a fancy variable (storing data) + can perform operations
Objects are communicating by sending messages
Each object has its own memory made up of other objects
●
Hiding complexity behind simplicity of objects (=composition)
–
Every object has a type (= it is an instance of a class)
–
All objects of same type can receive same messages
●
Alan Kay,
inventor of
Smalltalk
Families of types can be under a base type (=inheritance)
NMCGJ
2016-2017
Objects and Classes
●
Programming with objects: the interface
–
Class name
Interface
Light
switch()
brighten()
dim()
Class diagram
according to UML standard
(Unified Modeling Language)
Light (1)
–
Object
–
Message light1.switch();
Light light1 = new Light();
Light (2)
NMCGJ
2016-2017
Objects and Classes
●
Programming with objects: the interface
–
Class name
Light
Data
status
Interface
switch()
...
Class diagram
according to UML standard
(Unified Modeling Language)
Light (1)
–
Object
–
Message light1.switch();
Light light1 = new Light();
Light (2)
NMCGJ
2016-2017
Objects and Classes
●
Reusing the implementation
–
Good design: reuse of classes, once created and tested
–
Simplest way: creating member objects of a class
–
Composing a new class from existing classes
●
Composition is as a “has-a” relationship
Car
Class diagram
Engine
Wheel
NMCGJ
2016-2017
Objects and Classes
●
CoolingSystem
Reusing the interface
–
cool()
off()
Inheritance: derive functionality from a parent class
●
●
–
Polymorphism
●
AirConditioner
HeatPump
●
●
cool()
An “is-a” relationship: override parent class functions
An “is-like-a” relationship: override + add new functions
Code assumes parent class, but not specific child class
(upcasting)
Add new child classes without effort
Method call determined at run-time
cool()
heat()
NMCGJ
2016-2017