+ All Categories

Chap01

Date post: 01-Nov-2014
Category:
Upload: jotham-gadot
View: 286 times
Download: 0 times
Share this document with a friend
Description:
 
Popular Tags:
46
Data Structures Using Jav a 1 Chapter 1 Software Engineering Principles and Java Classes
Transcript
Page 1: Chap01

Data Structures Using Java 1

Chapter 1

Software Engineering Principles and Java Classes

Page 2: Chap01

Data Structures Using Java 2

Chapter Objectives

• Learn about software engineering principles• Discover what an algorithm is and explore

problem-solving techniques• Become aware of structured design and object-

oriented design programming methodologies• Learn about user-defined classes• Learn about private, protected, and public

members of a class

Page 3: Chap01

Data Structures Using Java 3

Chapter Objectives

• Explore how classes are implemented• Become aware of Unified Modeling Language

(UML) notation• Examine constructors and destructors• Learn about the abstract data type (ADT)• Explore how classes are used to implement ADT

Page 4: Chap01

Data Structures Using Java 4

Software Life Cycle

• Life cycle: the many phases a program goes through from the time it is conceived until the time it is retired

• Three fundamental stages of a program– Development– Use – Maintenance

Page 5: Chap01

Data Structures Using Java 5

Software Development Phase

• Analysis– Understand problem– Requirements analysis– Data analysis– Divide problem into subproblems and perform

analysis

Page 6: Chap01

Data Structures Using Java 6

Software Development Phase

• Design– Algorithm– Structured design

• Divide problem into subproblems and analyze each subproblem

– Object-oriented design• Identify components (objects) which form the basis

of solution• Determine how these objects interact with one

another

Page 7: Chap01

Data Structures Using Java 7

Software Development Phase

• Three basic principles of object-oriented design (OOD)– Encapsulation: ability to combine data and

operations in a single unit– Inheritance: ability to create new data types

from existing data types– Polymorphism: ability to use the same

expression to denote different operations

Page 8: Chap01

Data Structures Using Java 8

Software Development Phase

• Implementation– Write and compile programming code to

implement classes and functions discovered in design phase

Page 9: Chap01

Data Structures Using Java 9

Software Development Phase

• Testing and Debugging– Test the correctness of the program to make

sure it does what it is supposed to do– Find and fix errors– Run program through series of specific tests,

test cases

Page 10: Chap01

Data Structures Using Java 10

Software Development Phase

• Testing and Debugging– Black-box testing: test based on inputs and

outputs not the internal working of the algorithm or function

– White-box testing: relies on the internal structure and implementation of a function or algorithm; ensures that every part of the function or algorithm executes at least once

Page 11: Chap01

Data Structures Using Java 11

Algorithm Analysis: The Big-O Notation

Page 12: Chap01

Data Structures Using Java 12

Algorithm Analysis: The Big-O Notation

Page 13: Chap01

Data Structures Using Java 13

Algorithm Analysis: The Big-O Notation

Page 14: Chap01

Data Structures Using Java 14

Algorithm Analysis: The Big-O Notation

Page 15: Chap01

Data Structures Using Java 15

Algorithm Analysis: The Big-O Notation

• Definition: Let f be a function of n.The term “asymptotic” means the study of the function f as n becomes larger and larger without bound.

Page 16: Chap01

Data Structures Using Java 16

Algorithm Analysis: The Big-O Notation

Page 17: Chap01

Data Structures Using Java 17

Classes

• class: reserved word; collection of a fixed number of components

• Components: member of a class• Members accessed by name• Class categories/modifiers

– Private– Protected– public

Page 18: Chap01

Data Structures Using Java 18

Classes

• private: members of class not accessible outside class

• public: members of class accessible outside class

• Class members: can be methods or variables

• Variable members declared like any other variables

Page 19: Chap01

Data Structures Using Java 19

Syntax

• General syntax for defining a class:modifier(s) class ClassIdentifier modifier(s)

{

classMembers

}

• General syntax for using the operator new:new className()

or

new className(argument1, argument2, ..., argumentN)

Page 20: Chap01

Data Structures Using Java 20

Classes

• Syntax to access data member of class object or method:

referenceVariableName.memberName

• Shallow copying: two or more reference variables of the same type point to the same object

• Deep copying: each reference variable refers to its own object

Page 21: Chap01

Data Structures Using Java 21

Constructors

• Guarantee that data members are initialized when object is declared

• Automatically execute when class object created• Name of constructor is name of class• More than one constructor can be present in one

class• Default constructor: constructor without

parameters

Page 22: Chap01

Data Structures Using Java 22

The Copy Constructor

• Executes when an object is instantiated

• Initialized using an existing object

• Syntax

public ClassName(ClassName otherObject)

Page 23: Chap01

Data Structures Using Java 23

UML Diagram

Page 24: Chap01

Data Structures Using Java 24

UML Diagram

• Top box: Name of class • Middle box: data members and their data

types• Bottom box: member methods’ names,

parameter list, return type of method• + means public method• - means private method• # means protected method

Page 25: Chap01

Data Structures Using Java 25

Example: class ClockmyClock = new Clock();yourClock = new Clock(9,35,15);

Page 26: Chap01

Data Structures Using Java 26

Example: class Clock

Page 27: Chap01

Data Structures Using Java 27

Example: class Clock

Page 28: Chap01

Data Structures Using Java 28

The Method toString

• Public value-returning method

• Takes no parameters

• Returns address of String object

• Output using print and println methods

• Default definition creates String with name of object’s class name followed by hash code of object

Page 29: Chap01

Data Structures Using Java 29

The Modifier Static

• In method heading, specifies that method can be invoked by using name of class

• If used to declare data member, data member invoked by using class name

• Static data members of class exist even when no object of class type instantiated

• Static variables are initialized to their default values

Page 30: Chap01

Data Structures Using Java 30

static Data Members of a ClassIllustrate illusObject1 = new Illustrate(3);Illustrate illusObject2 = new Illustrate(5);

Page 31: Chap01

Data Structures Using Java 31

Finalizers

• Automatically execute when class object goes out of scope

• Have no parameters

• Only one finalizer per class

• Name of finalizer: finalize

Page 32: Chap01

Data Structures Using Java 32

Creating Packages

• Can create packages using reserved word package– Define the class to be public (If class not public

it can only be used within package)– Choose name for package. Organize package

(create subdirectories)

Page 33: Chap01

Data Structures Using Java 33

The Reference this

• Refers to instance variables and methods of a class

• Used to implement cascaded method calls

Page 34: Chap01

Data Structures Using Java 34

Inner Classes

• Defined within other classes

• Can be either a complete class definition or anonymous inner class definition

• Used to handle events

Page 35: Chap01

Data Structures Using Java 35

Abstract Data Types

• Definition:

A data type that specifies the logical properties without the implementation details

Page 36: Chap01

Data Structures Using Java 36

Programming Example: Candy Machine

(Problem Statement)• A common place to buy candy is from a candy machine. A new candy

machine is bought for the gym, but it is not working properly. The machine sells candies, chips, gum, and cookies. You have been asked to write a program for this candy machine so that it can be put into operation.

• The program should do the following:1. Show the customer the different products sold by the candy

machine.2. Let the customer make the selection.3. Show the customer the cost of the item selected.4. Accept money from the customer.5. Release the item.

Page 37: Chap01

Data Structures Using Java 37

Programming Example: Candy Machine

(Input and Output)• Input

– Item Selection– Cost of Item

• Output– The selected item

Page 38: Chap01

Data Structures Using Java 38

Programming Example: Candy Machine

• Components– Cash Register– Several Dispensers

Page 39: Chap01

Data Structures Using Java 39

Programming Example: Candy Machine

Page 40: Chap01

Data Structures Using Java 40

Programming Example: Candy Machine

Page 41: Chap01

Data Structures Using Java 41

Programming Example: Candy Machine

Object chips

Page 42: Chap01

Data Structures Using Java 42

Programming Example: Candy Machine

Sample Run: In this sample run, the user input is shaded.

*** Welcome to Shelly's Candy Shop ***To select an item, enter1 for Candy2 for Chips3 for Gum4 for Cookies9 to exit1Please deposit 50 cents50Collect your item at the bottom and enjoy.

Page 43: Chap01

Data Structures Using Java 43

Object-Oriented Design

• Simplified methodology1. Write down detailed description of problem

2. Identify all (relevant) nouns and verbs

3. From list of nouns, select objects

4. Identify data components of each object

5. From list of verbs, select operations

Page 44: Chap01

Data Structures Using Java 44

Object-Oriented Design Example

• Problem Statement– Write a program to input the dimensions of a

cylinder and calculate and print the surface area and volume

• Nouns– Dimensions, surface area, volume, cylinder

Page 45: Chap01

Data Structures Using Java 45

Chapter Summary

• Software Life Cycle– Development, Use, Maintenance

• Algorithm Analysis: The Big-O Notation

• Classes

• UML Diagram

• Constructors, Destructors

• Abstract Data Types

Page 46: Chap01

Data Structures Using Java 46

Chapter Summary

• Software Development Phase– Analysis– Design

• Structured design

• Object-oriented design

– Encapsulation, Inheritance, Polymorphism

– Implementation– Testing and Debugging


Recommended