Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 21 COP 3540 Data Structures with OOP Overview: Chapter 1.

Similar presentations


Presentation on theme: "1 21 COP 3540 Data Structures with OOP Overview: Chapter 1."— Presentation transcript:

1 1 21 COP 3540 Data Structures with OOP Overview: Chapter 1

2 2 21 Important Notice  I will cover several slides (but not all) in these sets of slides. I will outline those that need elaboration.  You are responsible for studying and knowing all the slide materials and the text materials.  Exams and short quizzes will be taken largely from these slides and topics brought up in class.

3 3 21 Why Data Structures and Algorithms?  Data Structures are merely different arrangements of data in primary memory or on disk, and  Algorithms are sequences of instructions that manipulate the data in these data structures in a variety of ways.

4 4 21 Examples of Some Data Structures  Many data structures:  Arrays  Linked lists  Stacks  Binary Trees  Red Black Trees  2-3-4 Trees  Hash Tables  Heaps, etc.  Different algorithms are needed to build, search, and manipulate data stored in these various structures

5 5 21 Plain Facts:  The plain fact is that many items in nature have an ‘natural arrangement’ with their predecessor or successor element.  Think: records in a sequential file  Think: a family ‘tree’  If  we model this natural occurring arrangement in the computer using some kind of data structure that reflects the real world realities of the data and their implicit relationships,  then  we need specialized algorithms for building, retrieving, and otherwise accessing the data itself.

6 6 21 Examples of ‘Plain Facts’ Example 1  Consider a sequence of numbers  may be best represented in an array.  We need to ‘search’ the array for a number.  An Algorithm processes this arrangement of data.  If ordered and sufficiently large: binary search  If unordered: sequential search is our only option. (Performance issues can be huge: either way.)

7 7 21 Examples of ‘Plain Facts’ Example 2  We may best ‘represent’ (model) a family and children by a tree structure. (a logical data structure)  How do we add members to such a tree?  How do we Search?  How to delete when there are ‘descendents’  How do we best Add to a large tree?  We need very specific Algorithms to process this structure.

8 8 21 Data Structures are NOT Created Equal  All have advantages and disadvantages.  Worst ‘algorithm’ that processes data in one data structure may be the best in other case.  Never “poo-poo” a data structure or a seemingly inefficient algorithm!

9 9 21 Know: Definitions of terms below and have an example…  Database  Record  Field (attribute)  If I should ask for a definition, please recognize that an ‘example’ (drawing or text) is NOT a definition.  A definition must be very unambiguous.

10 10 21 Object Oriented Programming  Addressed two problems of procedural languages:  Lack of correspondence between the program and the real world, (physical description vs program realization)  The internal organization of the program.  Most real world objects have properties (attributes).  Objects provide certain actions or services on data for clients.  They can carry out a task if sent a ‘message.’

11 11 21 Examples :  Programs were (largely) ‘procedural.’  Divided into functions, sections, paragraphs, ‘routines.’  Data:  either ‘local’ to one construct (function or procedure) or  ‘global’ to many.  Global Data, No practical way to specify methods that can access a variable and those that cannot.  Result: for global data, all data – even data not needed by particular procedures – was available to all (or most) procedures.  COBOL; Can do in C and others too, if not careful  Recall: Call by Reference; Call by Value??  Frequently a source of inadvertent errors!!!  Know these!!! 

12 12 21 Objects :  Encapsulate data (attributes, fields, properties)  and  Encapsulate operations ( methods, member functions ) that operate on the data.  Only methods within an object are allowed access to data in that object. (in Java)  (if attributes are given visibility ‘private.’)   An object may be viewed as a real world representation of a real ‘thing’ or ‘noun.’  An object is an instantiation of a class.

13 13 21 Classes  A class is a generalization of many objects;  A class is a template; an abstraction.  Objects are merely ‘instances’ of classes, but these are real and these are what we process!  We access these objects by referencing them. (References are ‘addresses’ of the objects)  We often create references to objects first and then create the objects themselves.  e.g.  Thermostat therm1, therm2; // references  therm1 = new Thermostat(); // creates the object  therm2 = new Thermostat(); // w therm1 and 2 pointing // to their respective objects.  Consider Listing 1.1 in your book as a Review:

14 14 21  A good ‘review’ is undertaken in the following code…

15 15 21  // bank.java // demonstrates basic OOP syntax  class BankAccount  {  private double balance; // account balance why private? What kind of variable is this? Why? // Who has ‘access’ to balance?  public BankAccount ( double openingBalance) // constructor  {  balance = openingBalance; // What is a Constructor?  }  public void deposit ( double amount) // makes deposit  {  balance = balance + amount; // What is amount called? (formally)  // Is this Call by Reference or Call by Value?  } // end deposit // Note ‘scope terminator’  public void withdraw(double amount) // makes withdrawal  {  balance = balance - amount;  }  public void display() // displays balance  {  System.out.println ("balance=" + balance);  }  } // end class BankAccount  class BankApp // Note: this class is still in the same file….  {// Where does execution start?  public static void main(String[] args)  {  BankAccount ba1 = new BankAccount(100.00); // reference and acct object; Other ways to do this?  System.out.print ("Before transactions, ");  ba1.display(); // display balanceWhat is going on here? What do you call this?  ba1.deposit(74.35); // make depositWhat is the 74.35 called?  ba1.withdraw(20.00); // make withdrawal  System.out.print ("After transactions, ");  ba1.display(); // display balance  } // end main()  } // end class BankApp KNOW: Instance variables; local variables; static (class) variables)

16 16 21 // bank.java // // demonstrates basic OOP syntax file name or application name or package // name…(more ahead) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class BankAccount { private double balance; // account balance most object data is private public BankAccount(double openingBalance) // constructor Constructor never has a ‘return type’ {// in Javadoc for @params put None. balance = openingBalance; }// end constructor public void deposit(double amount) // makes deposit: four methods (“services” provided // to clients of this object. { balance = balance + amount; }// end deposit public void withdraw(double amount) // makes withdrawal // most methods (services) are { // public. When might they be private? balance = balance - amount; // What is the signature of an object? }// end withdraw public void display() // displays balance { System.out.println("balance=" + balance); }//end display() } // end class BankAccount // I require scope terminators on methods and classes. Note: object ‘encapsulates’ everything about bank account objects; ‘ information hiding’ too. Let’s look at the two Classes:

17 17 21 class BankApp { public static void main(String[] args) { BankAccount ba1 = new BankAccount(100.00); // create acct // what does this statement do? System.out.print("Before transactions, ");// Explain what this REALLY is! ba1.display(); // display balance // Explain generically what this really is! ba1.deposit(74.35); // make deposit // Explain generically what this really is! ba1.withdraw(20.00); // make withdrawal System.out.print("After transactions, "); // What is this statement? What does it do? ba1.display(); // display balance } // end main() } // end class BankApp  Note the scope terminators Outputs: Before transactions, balance=100 After transactions, balance=154.35 …and the second class

18 18 21 Inheritance and Polymorphism  Had  1. encapsulation  2. information hiding  What is encapsulation? Examples?  What is information hiding? Examples?  Who cares??

19 19 21 Inheritance and Polymorphism  Inheritance involves  Creation of a class (subclass, derived class, child class…) from a base class (super class, parent, …)  Add features in subclasses (derived classes); override features in base class, etc.  Inheritance is all about reuse!!  Polymorphism  Are different derived classes from a base class.  Methods are said to be ‘polymorphic.’  In practice, polymorphism usually refers to referencing a method (a ‘polymorphic’ method) that will execute a different method for different objects of different derived classes all of which come from the base class. Method name is same; Pointer to object (and thus method body) is different.  Significant facility to support extension, maintainability, and a number of other design features.  Polymorphism is all about design, extension, and reuse.

20 20 21 Study:  Summary  Go through these materials and the study questions too.  Make sure you understand these. You will see these again shortly.

21 21 Questions?


Download ppt "1 21 COP 3540 Data Structures with OOP Overview: Chapter 1."

Similar presentations


Ads by Google