300 likes | 435 Views
CS2006 - Data Structures I. Chapter 2 Principles of Programming & Software Engineering. Topics. Modular Design Concepts Abstraction OO Design Encapsulation Inheritance Polymorphism Top Down Design Structure Chart. My interior design is using Cylinder brakes or Drum brakes.
E N D
CS2006 - Data Structures I Chapter 2 Principles of Programming & Software Engineering
Topics • Modular Design Concepts • Abstraction • OO Design • Encapsulation • Inheritance • Polymorphism • Top Down Design • Structure Chart
My interior design is using Cylinder brakes or Drum brakes Push the brakes Brake pedal pushed Client box Car Black box Car stop Abstraction & Information Hiding • Example: Cars brakes
I can sort data into ascending order without you knowing how Sort this data please, I don’t care how you do it Unsorted data Client box Sort Black box Sorted data Abstraction • Abstraction separates the purpose of a module from its implementation. • Example: Sorting
Procedural Abstraction • Procedural Abstraction is the process of separating the purpose of a method from its implementation. • Once written the method can be used without any knowledge of how it is implemented - only need to know the parameters. • Example: nearly all methods in the entire Java API.
Abstract Data Types • ADT - a collection of data along with a set of operations that can be performed on that data. • No details about how the data is stored or how the operations on the data are implemented. • An ADT is a general description of the design of a module with no details.
Abstract Data Types • Data Structure - the implementation of an ADT in a programming language. • The details of data storage and how operations are performed are crucial parts of a data structure.
ADT List • Any List in general will allow the following operations: • Create an empty list • Destroy a list • Determine whether a list is empty • Determine the number of items in a list • Insert an item at a given position in the list • What else?
Object-Oriented Design • Three elements to OOD: • Encapsulation - combining data and operations within one object. • Inheritance - objects can inherit data and/or methods from other objects. • Polymorphism - objects can determine operations at execution time. • Every object knows its "true" type regardless of type casting
Inheritance • A class can inherit the variables and methods of another class. • It can keep those it wants and replace those it doesn’t. • Example: our Person class. • we want a class of students. • we can’t change our Person class because • many people are using it as it stands • perhaps we don’t have access to the source code • Create a new class called Student that extends the current class Person by the addition of a new variables and methods parent class super class Person child class subclass Student
Class design • extend the definition of Person • build a subclass for each specific type of person Person Faculty Student
Class hierarchy int getAge() Person String getName() Faculty Student void setId(String new_id) void setSalary(float newSalary) float getHoursWorked() float getGPA()
Object-Oriented Design • Produce a collection of objects that have behaviours • How to do • Identifying the objects in the problem • UML • Contents of Software Engineering (cosc 4506)
Object-Oriented Design • Consider the nouns and verbs in the problem domain Create a ATM machine which allow user to retrieve, deposit, transfer and check balance of their accounts Account Type: String Amount: double transfer (int ) checkBalance() retrieve deposit () ATM Account: account Open () Close()
Top-Down Design • Is a structured programming methodology • Focused on algorithm design. • Goal is to break a large problem into a set of smaller problems that are more easily solved.
Top-Down Design • An attempt is made to solve a problem in terms of small subproblems • Divide and Conquer strategy • How?
Find Median Read Scores Sort scores Get middle score Read score From user Insert score into array Top-Down Design (TDD) • Structure chart:
Structure Charts • Can add some info into our structure chart • to show how we share the data • Two type of info that get passed between our methods • Data • Control Information or flags • Thing like “perform such and such an operation” • Or “ we have hit the end of file”
Structure Charts • Use named arrows to show the data flow • Data arrows • Flag arrows
Structure Charts • Structure chart: Find Median Read Scores Sort scores Get middle score
Structure Charts • Structure chart: Find Median Read Scores Sort scores Get middle score MarkEnrty: contain score and ID Read score Insert score into array MarkArray: contain array of scores
Structure Charts • Structure chart: Find Median Read Scores Sort scores Get middle score EOF MarkEntry MarkEntry MarkEnrty: contain score and ID Read score Insert score into array MarkArray: contain array of scores
Structure Charts • Structure chart: Find Median MarkArray Read Scores Sort scores Get middle score EOF MarkEntry MarkEntry MarkEnrty: contain score and ID Read score Insert score into array MarkArray: contain array of scores
Structure Charts • Structure chart: Find Median MarkArray MarkArray MarkArray Read Scores Sort scores Get middle score EOF MarkEntry MarkEntry MarkEnrty: contain score and ID Read score Insert score into array MarkArray: contain array of scores
Structure Charts • The manner in which this structure diagram would be implemented as a program is obvious • It is now possible to create a skeletal program with all the method headers • All you need is to fill in detail
Structure Charts Public class FindMedian { public static void main (..) { } public static void readScore (int []MarkArray) { } public static void sortScore (int []MarkArray) {} public static int getMedian (int []MarkArray) {} • }
Structure Charts public class FindMedian { public static void main (..) { int MarkArray []; } public static void readScore (int []MarkArray) { } public static void sortScore (int []MarkArray) {} public static int getMedian (int []MarkArray) {} • }
Structure Charts public class FindMedian { public static void main (..) { int MarkArray []; readScore (MarkArray); } public static void readScore (int []MarkArray) { } public static void sortScore (int []MarkArray) {} public static int getMedian (int []MarkArray) {} • }
Structure Charts public class FindMedian { public static void main (..) { int MarkArray []; readScore (MarkArray); sortScore (MarkArray); } public static void readScore (int []MarkArray) { } public static void sortScore (int []MarkArray) {} public static int getMedian (int []MarkArray) {} • }
Structure Charts public class FindMedian { public static void main (..) { int MarkArray []; readScore (MarkArray); sortScore (MarkArray); getMedian (MarkArray); } public static void readScore (int []MarkArray) { } public static void sortScore (int []MarkArray) {} public static void getMedian (int []MarkArray) {} • }