Title: Chapter 1: Data Abstraction. Introductory concepts.
1Chapter 1 Data Abstraction. Introductory
concepts.
2Objectives
- After studying this chapter you should understand
the following - the nature of a software object its properties,
functionality, data, and state - the notions of query and command
- values and collection of values called types
- Javas built-in types
- variables, and the relationship between values,
variables, and types - classes as collections of related objects
- the syntactic layout of a class as defined in
Java - reference values and reference types.
3Objectives
- Also, you should be able to
- classify an object as immutable or mutable
- describe the components of a system developed
using objects - describe the values comprising the built-in Java
types - describe literals of the built-in Java types
- form legal Java identifiers and name the role of
identifiers in programming.
4Objects
- Fundamental abstractions to build software
systems. - Objects are often abstractions of real-world
entities - students,
- employees,
- rooms,
- passageways,
- chess pieces.
5Objects
- System functionality set of tasks it must
perform. - Tasks system must perform are allocated to
objects. - A given object has responsibility for performing
certain specific tasks of the system. - A critical part of system design is allocating
responsibilities to objects.
6Data and State
- An object is responsible for maintaining relevant
data about the thing it models. - Example Given object Student as part of a
registration system. Data it maintains - Name,
- address,
- number of credit hours the student is enrolled
in, - students course schedule,
- whether or not the student has paid fees, etc.
7Data and State
- An object contains a number of data items,
- Each data item consists of
- a data description
- an associated value.
8Data and State
- The data descriptions are the properties of the
object. - Example Properties of a student object include
- Name,
- address,
- number of credit hours the student is enrolled
in, - students course schedule,
- whether or not the student has paid fees, etc.
- If we are modeling a playing card, object
properties will include suit and rank.
9Data and State
- Each property of an object has an associated
value. - Examples
- The students name is Stephen Dadelus,
- the playing cards rank is Jack,
- the windows width is 100 pixels.
10Data and State
- Instance variables variables for objects
values. - A portion of computer memory reserved for storing
a particular value. - Memory space used to store an objects instance
variables allocated to object when created. - An instance variable is allocated for each
property of the object. - Instance variable contains the data value
associated with that property.
11Data and State
- The set of properties of an object is fixed.
- The associated values can often change over time
- a student can change address or even name
- a computer user can change the width and height
of a window on the screen. - Objects state set of objects instance
variables and associated values at any given
time.
12Mutable and Immutable objects
- Immutable object object whose state cannot be
changed. - An object whose state can be changed is mutable.
13Mutable and Immutable objects
- Example of mutable objects
- Student,
- Computer screen window
- Examples of immutable objects
- A playing card
- A Calendar date
- A color.
14Functionality Queries and Commands
- An object maintains data in order to support its
functionality. - Object functionality actions the object performs
in response to requests from other objects.
15Functionality Queries and Commands
- Two kinds of requests an object can serve
- Query request for data
- Command request to change its state.
- Objects features collection of queries and
commands.
16Queries
- A request for data maintained by the object.
- Object responds by providing a value.
17Queries
- Examples
- a student object might be queried for the
students name, - a playing card object for the cards suit,
- a chess piece for its position.
- Queries are used to gather information about an
objects state.
18Queries
- An object might support queries for data it does
not explicitly store. - Example object modeling a window maintains
length and width. Design query for the windows
area. - Area is not explicitly stored in an objects
instance variables.
19Queries
- An object might not support queries for data it
does store. - Example an object representing a computer user
contains the users name and password. - The object is not likely to support a query for
the password.
20Commands
- Instructs object to perform some action resulting
in value stored in one or more of the objects
instance variables to be changed.
21Commands
- Examples
- a student object might be instructed to drop a
course, changing the credit hours and course
schedule properties of the object - a chess piece might be told to move to a
different square - or a solitaire playing card object might be
instructed to turn over, changing its is face
up property.
22Commands
- An immutable object supports no commands to
change its state.
23Objects change in response to commands
drop course (Ethics 1001)
SolitairePlayingCard
SolitairePlayingCard
turnOver
Heart
suit
Heart
suit
10
10
rank
rank
true
isFaceUp
false
isFaceUp
state before command
command
state after command
24Values and Types
- Values abstractions used to represent, or model,
properties of objects.
25Values and Types
- Integers model problem features we count
- the number of students in a class, or
- the number of words on a page.
- Real numbers model problem features we measure
- the width of a table,
- the voltage drop across a line.
26Values and Types
- Values are grouped together according to the
operations we perform with them. - Type A set of values along with the operations
that can be performed with them.
27Javas built-in primitive types
- Integer types
- byte, short, int, long.
- Real types
- float, double.
- The operations for these types include
- addition, subtraction, multiplication, and
division.
28Javas built-in primitive types
- char
- values include the upper and lower case letters,
digits, punctuation marks, and spaces that
constitute text. - boolean.
- contains only the two values true and false.
29Ranges of integer type values
type Smallest value Largest value
byte -128 127
short -32,768 32,767
int -2,147,483,648 2,147,483,647
long -9,223,372,036,854,775,808 9,223,372,036,854,775,807
30Types and variables
- A variable can contain values of only one type.
- An int variable contains a single int value
- a double variable contains a double value, etc.
31Types and variables
- The type of value a variable contains is
- type of the variable and
- fixed when the object is designed.
- Example The width of a window might be 100
pixels at one time, and 150 pixels some time
later. - Value will always be an integer, and instance
variable modeling it is of type int
32Classes
- Class collection of similar objects, that is,
objects supporting the same queries and commands. - Every object is an instance of some class, which
determines the objects features.
33Example A class modeling a counter
- / 1
- A simple integer counter.
- /
- public class Counter
- private int count
- /
- Create a new Counter, with the count
initialized to 0 - /
- public Counter ()
- count 0
-
- /
- The number of items counted /
- public int currentCount ()
- return count
-
- / 2
- Increment the count by 1.
- /
- public void incrementCount ()
- count count 1
-
- /
- Reset the count to 0.
- /
- public void reset ()
- count 0
-
- // end of class Counter
34Reference values Objects as properties of
objects
- Know how to model objects properties such as
numbers, or characters. - How to model properties like the name, address,
and course schedule or birthday of a student?
35Reference values Objects as properties of
objects
- Example to model birthday, we first model a date
with an object, via the class Date
36Reference values
- The students value for property birthday
denotes or refers to a Date object. - Value is a reference value.
- Type is reference-to-Date
- reference value a value that denotes an object.
37Modeling students name, address Javas class
String
- String instance immutable object that contains a
sequence of characters. - A String can be queried for length and for
individual characters that comprise it. - Class contains no state-changing commands.
38Overview of a complete system
- Set of objects comprising system can be divided
into - Model objects that cooperate to solve the
problem. - external interface or user interface and
- data management objects that maintain problems
data.
39Overview of a complete system
- Example
- We build a very simple system to test a Counter.
- The model only a single class Counter.
- The user interface only a single class
CounterTester. - Data management none.
40//A simple tester for the class Counter. public
class CounterTester private Counter
counter // Create a new CounterTester.
public CounterTester () counter new
Counter() // Run the test. public void
start () System.out.println("Starting
count") System.out.println(counter.currentCoun
t()) counter.incrementCount() counter.increm
entCount() counter.incrementCount() System.o
ut.println("After 3 increments") System.out.pr
intln(counter.currentCount()) counter.reset()
System.out.println("After reset") System.out
.println(counter.currentCount())
41Getting it all started
- We need one more class containing a method named
main, as shown
/ Test the class Counter. / public class
Test / Run a Counter test. / public
static void main (String args)
CounterTester tester new CounterTester()
tester.start()
42Running a program
- It depends on the computing system and
environment used. We must identify class
containing method main to the Java run-time
system. For instance,
java Test
- Running the program will produce six lines of
output
Starting count 0 After 3 increments 3 After
reset 0
43Identifiers
- We use identifiers to name things in Java.
- A Java identifier is a sequence of characters
consisting of letters, digits, dollar signs(),
and/or underscores(_). An identifier can be of
any length, and cannot begin with a digit.
X Abc aVeryLongIdentifier b29 a2b A_a_x b2 _
IXLR8
2BRnot2B a.b Hello! A-a Test.java
44Identifiers
- Java identifiers are case sensitive. This means
that upper and lower case characters are
different. For example, the following are all
different identifiers.
total Total TOTAL tOtAl
45Identifiers
- There are a number of keywords and identifier
literals reserved for special purposes. - Cannot be used as identifiers.
- Identifier literals true, false, null
46Guidelines in choosing identifiers
- Use lower-case characters, with upper-case
characters inserted for readability. - Capitalize class names.
- Choose descriptive identifiers
- Avoid overly long identifiers.
- Avoid abbreviations.
- Be as specific as possible.
- Take particular care to distinguish closely
related entities. - Dont incorporate the name of its syntactic
category in the name of an entity
47Literals
- A literal is a representation of a value.
48Integer Literals
- Integer literals look like ordinary decimal
numbers, and denote values of the type int. - Integer literals cant contain commas and
shouldnt have leading zeros.
25 0 1233456 289765 7
49Floating point Literals
- Numbers that include a decimal point denote
values of type double.
0.5 2.67 0.00123 12.0 2. .6
50Floating point Literals
- Exponential notation can also be used for double
literals. The following are legal double
literals
0.5e3 0.5e-3 0.5E3 5e4 2.0E-27
51Character Literals
- Character literals (denoting values of type char)
consist of a single character between
apostrophes.
'A' 'a' '2' '' '.' ' '
52Character Literals
- The apostrophe, quotation mark, and backslash
must be preceded by a backslash in a character
literal.
'\'' '\"' '\\'
53Character Literals
'\t' //represents the tab character '\n' //represe
nts the end of line character.
54Boolean Literals
- The two values of type boolean are written as
follows
true false
55Boolean Literals
- String literal is a possibly empty sequence of
characters enclosed in quotations
"ABC" "123" "A" ""
56Summary
- chapter introduced the fundamental notions of
value, type, object, and class. We also saw Java
identifiers and literals.
57Summary
- Values fundamental pieces of information
manipulated in a program. - Values are grouped along with their operations
into types.
58Summary
- Java has two kinds of types
- primitive types
- several integer types (byte, short, int, long)
- two real or floating types (float and double)
- character type char, and
- type boolean which contains two values, true and
false. - reference types.
59Summary
- A reference value denotes, or refers to, an
object. - Objects are the fundamental abstractions from
which software systems are built.
60Summary
- Objects are often abstractions of real-world
entities, - Designed to support system functionality.
61Summary
- An objects role in the system determines the set
of features the object is responsible for
supporting. These features include - queries, by which data values are obtained from
the object - commands, which cause the object to perform some
actions change state of the object.
62Summary
- Instance variables Data maintained by the object
- State of object Instance variables and their
values at any given point in the computation - Query reports information obtained from the state
of the object. - Command usually causes object to change state.
- Some objects are immutable.
- state cannot change after the object is created.
63Summary
- Objects are grouped into classes.
- A class defines the features of, and data items
maintained by, its members. - All objects in a particular class have the same
features. - An object that is a member of a particular class
is called an instance of the class.
64Summary
- Defining a class
- define instance variables
- define algorithms for carrying out queries and
commands.
65Summary
- Reference value value that denotes or refers to
the object. - Type is reference-to-x, where x is the class of
the object.
66Summary
- Objects that comprise a system can be divided
into three basic subsystems - Model represent the problem and cooperate to
provide the solution. - External interface user interface.
- Data management responsible for storing and
retrieving persistent data in a file system or
data base.
67Summary
- identifiers name of entities in programs.
- We name classes, objects, properties, features
- An identifier is a sequence of characters
consisting of letters, digits, dollar signs,
and/or underscores.
68Summary
- Literal denote a particular value in a program
- Literals can be used to denote
- integer values,
- floating point values,
- character values,
- boolean values,
- Strings.