eecs%2011%fundamentalsof%data%structures€¦ · last%updated:%%jan%4,%2018 eecs2011 prof.%j.%elder...
TRANSCRIPT
![Page 1: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/1.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
EECS 2011 Fundamentals of Data StructuresComputer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.
- Donald Knuth
![Page 2: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/2.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Instructor
• James Elder – 0003G Lassonde Engineering Buildingtel: (416) 736-2100 ext. 66475 fax: (416) 736-5857email: [email protected] website: www.yorku.ca/jelder
– Office Hour: Thursday 14:30-15:30
2
![Page 3: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/3.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Course Website
• www.eecs.yorku.ca/course/2011Z
3
![Page 4: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/4.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Textbook• Goodrich, M.T., Tamassia R. & Goldwasser, M.H. (2014). Data Structures and Algorithms in Java (6th ed.) John Wiley & Sons.– Amazon.ca: $156.24 ($51.20 on Kindle)
– Chapters.indigo.ca: $157.82
– York Bookstore: $174.95
4
![Page 5: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/5.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Summary of Requirements
Component WeightProgramming Assignments 20%Midterm test (closed book) 30%Final exam (closed book) 50%
Please see syllabus posted on website for more detailed information.
5
![Page 6: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/6.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
How to do well in this course
1. Attend all of the lectures!
2. Do the readings prior to each lecture.
3. Work hard on each assignment.1. Do not leave them to the last moment.
2. Ask one of the TAs or me if there is something you do not understand.
4. Do the problem sets before the midterm and final exam1. These are not graded, but the problems are similar to those you
will find on the midterm and final, and so will help you prepare.
6
![Page 7: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/7.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Try to pay attention!
7
Laptop multitasking hinders classroom learning for both users and nearby peers
Faria Sana a, Tina Weston b,c, Nicholas J. Cepeda b,c,*
aMcMaster University, Department of Psychology, Neuroscience, & Behaviour, 1280 Main Street West, Hamilton, ON L8S 4K1, Canadab York University, Department of Psychology, 4700 Keele Street, Toronto, ON M3J 1P3, CanadacYork University, LaMarsh Centre for Child and Youth Research, 4700 Keele Street, Toronto, ON M3J 1P3, Canada
a r t i c l e i n f o
Article history:Received 11 September 2012Received in revised form5 October 2012Accepted 12 October 2012
Keywords:LaptopsMultitaskingAttentional controlPedagogy
a b s t r a c t
Laptops are commonplace in university classrooms. In light of cognitive psychology theory on costsassociated with multitasking, we examined the effects of in-class laptop use on student learning ina simulated classroom. We found that participants who multitasked on a laptop during a lecture scoredlower on a test compared to those who did not multitask, and participants who were in direct view ofa multitasking peer scored lower on a test compared to those who were not. The results demonstrate thatmultitasking on a laptop poses a significant distraction to both users and fellow students and can bedetrimental to comprehension of lecture content.
! 2012 Elsevier Ltd.
1. Introduction
Multitasking is ingrained in our daily lives. As you read this article, youmay also be attending to a text message, sipping coffee, or writingout a list of to-dos. Such a lifestyle is intended to increase efficiency; however, there are limitations to howwell multiple tasks can be carriedout concurrently (Posner, 1982). Multitasking places considerable demands on cognitive resources, which, in turn, degrades overallperformance, as well as performance on each task in isolation (Broadbent, 1958). The issue of multitasking and its consequences has becomea growing concern in education, as students are more commonly found engaged with their laptops or smartphones during class time. Thecurrent study investigated the effect of laptop multitasking on both users and nearby peers in a classroom setting.
There is a host of theoretical and experimental research on divided attention and dual-task interference, terms that we considerhomologous to multitasking and therefore relevant to the current discussion. Research suggests that we have limited resources available toattend to, process, encode, and store information for later retrieval (Posner, 1982). When focused on a single primary task, our attentionalresources are well directed and uninterrupted, and information is adequately processed, encoded, and stored (Naveh-Benjamin, Craik,Perretta, & Tonev, 2000). When we add a secondary task, attention must be divided, and processing of incoming information becomesfragmented. As a result, encoding is disrupted, and this reduces the quantity and quality of information that is stored (Pashler, 1994). Whenwe eventually retrieve information that was processed without interruptions, as a primary task, we are likely to experience minimal errors.When we retrieve information that was processed via multitasking or with significant interruptions from a secondary task, we are morelikely to experience some form of performance decrement (Wickens & Hollands, 2000).
Indeed, managing two ormore tasks at one time requires a great deal of attention. Attentional resources are not infinite (Konig, Buhner, &Murling, 2005; Pashler, 1994). When the level of available attentional resources is less than what is required to complete two simultaneoustasks, performance decrements are experienced since both tasks are competing for the same limited resources. This is especially true if bothtasks are competing for resources within the same sensory modality (Navon & Gopher, 1979; Wickens, 2002; Wickens & Hollands, 2000).Limits to attentional resources means the quality (accuracy) and efficiency (reaction time) at which multiple tasks are processed will becompromised (Rubinstein, Meyer, & Evans, 2001). Numerous experimental studies have shown performance decrements under conditionsof multitasking or divided attention (e.g., Broadbent, 1958; Tulving & Thomson, 1973).
* Corresponding author. York University, LaMarsh Centre for Child and Youth Research, 4700 Keele Street, Toronto, ON M3J 1P3, Canada. Tel.: þ1 416 736 2100x33266;fax: 1 416 736 5814.
E-mail addresses: [email protected] (F. Sana), [email protected] (T. Weston), [email protected] (N.J. Cepeda).
Contents lists available at SciVerse ScienceDirect
Computers & Education
journal homepage: www.elsevier .com/locate/compedu
0360-1315! 2012 Elsevier Ltd.http://dx.doi.org/10.1016/j.compedu.2012.10.003
Computers & Education 62 (2013) 24–31
Open access under CC BY-NC-ND license.
Open access under CC BY-NC-ND license.
![Page 8: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/8.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
8
Please ask questions!
Help me know what people are not understanding!
![Page 9: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/9.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Course Outline• Introduction
• Analysis Tools
• Linear Data Structures
• The Java Collections Framework
• Recursion
• Trees
• Priority Queues & Heaps
• Maps, Hash Tables, Dictionaries
• Loop Invariants & Binary Search
• Search Trees
• Comparison Sorts
• Linear Sorts
• Graphs – ADTs & Implementations
• Graphs – Depth First Search
• Graphs – Breadth First Search
9
![Page 10: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/10.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
10
On the slides
• These slides:– are posted on the course website.
– may change up to the last minute as I polish the lecture.
– Incorporate slides produced by the textbook authors (Goodrich & Tamassia).
• I will also post recorded lectures (voice + slides)– However, I encourage you to attend in person for a better experience.
![Page 11: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/11.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Lecture 1
Data Structures and Object-Oriented Design
![Page 12: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/12.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Abstract Data Types & Interfaces
• Casting
• Generics
• Pseudo-Code
12
![Page 13: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/13.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Interfaces
• Casting
• Generics
• Pseudo-Code
13
![Page 14: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/14.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Programs = Data Structures + Algorithms
![Page 15: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/15.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Principles of Object Oriented Design
• Programs consist of objects.
• Objects consist of– Data structures
– Algorithms to construct, access and modify these structures.
15
![Page 16: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/16.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structure
• Definition: An organization of information, usually in memory, such as a queue, stack, linked list, heap, dictionary, or tree.
16
![Page 17: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/17.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Algorithm• Definition: A finite set of unambiguous instructions performed in a prescribed sequence to achieve a goal, especially a mathematical rule or procedure used to compute a desired result.– The word algorithm comes from the name of the 9th century Persian mathematician Muhammad ibn Mūsā al-Khwārizmī.
– He worked in Baghdad at the time when it was the centre of scientific studies and trade.
– The word algorism originally referred only to the rules of performing arithmetic using Arabic numerals but evolved via European Latin translation of al-Khwarizmi's name into algorithm by the 18th century.
– The word evolved to include all definite procedures for solving problems or performing tasks.
17
![Page 18: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/18.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures We Will Study• Linear Data Structures
– Arrays
– Linked Lists
– Stacks
– Queues
– Priority Queues
• Non-Linear Data Structures– Trees
– Heaps
– Hash Tables
– Search Trees
• Graphs– Unirected Graphs
– Directed Graphs
– Directed Acyclic Graphs
18
![Page 19: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/19.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Some Algorithms We Will Study
• Searching
• Sorting
• Graph Search
• Topological Sorts
Please see syllabus posted on website for detailed schedule (tentative).
19
![Page 20: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/20.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Design Patterns
• A template for a software solution that can be applied to a variety of situations.
• Main elements of solution are described in the abstract.
• Can be specialized to meet specific circumstances.
• Example algorithm design patterns:– Recursion
– Divide and Conquer
20
![Page 21: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/21.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Abstract Data Types & Interfaces
• Casting
• Generics
• Pseudo-Code
21
![Page 22: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/22.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Software Engineering• Software must be:
– Readable and understandable • Allows correctness to be verified, and software to be easily updated.
– Correct and complete • Works correctly for all expected inputs
– Robust• Capable of handling unexpected inputs.
– Adaptable• All programs evolve over time. Programs should be designed so that re-use, generalization and modification is easy.
– Portable• Easily ported to new hardware or operating system platforms.
– Efficient• Makes reasonable use of time and memory resources.
22
![Page 23: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/23.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Premature Optimization
• Premature optimization is the root of all evil.– Donald Knuth
23
![Page 24: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/24.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Premature Optimization
• In general we want programs to be efficient. But:– Obviously it is more important that they be correct.
– It is often more important that they be• Understandable
• Easily adapted
– In striving for efficiency, it is easy to:• Introduce bugs
• Make the program incomprehensible
• Make the program very specific to a particular application, and thus hard to adapt or generalize.
24
![Page 25: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/25.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Asymptotic Analysis
• Asymptotic analysis is a general method for categorizing the efficiency of algorithms.
• Asymptotic analysis helps to distinguish efficiencies that are important from those that may be negligible.
• This will help us to balance the goal of efficiency with other goals of good design.
• This will be the topic of Lecture 2.
25
![Page 26: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/26.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Principles of Object Oriented Design
• Object oriented design makes it easier to achieve our software engineering goals:– Comprehensibility
– Software re-use
– Adaptation (to new scenarios)
– Generalization (to handle many scenarios simultaneously)
– Portability (to new operating systems or hardware)
26
![Page 27: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/27.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Principles of Object-Oriented Design
• Modularity
• Encapsulation
• Abstraction
• Hierarchical Organization
27
![Page 28: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/28.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Modularity
• Complex software systems are hard to conceptualize and maintain.
• This is greatly facilitated by breaking the system up into distinct modules.
• Each module has a well-specified job.
• Modules communicate through well-specified interfaces.
28
![Page 29: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/29.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Encapsulation
• Each object reveals only what other objects need to see.
• Internal details are kept private.
• This allows the programmer to implement the object as she or he wishes, as long as the requirements of the abstract interface are satisfied.
29
![Page 30: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/30.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Abstraction• The psychological profiling of a programmer is mostly the ability to shift levels of abstraction, from low level to high level. To see something in the small and to see something in the large. – Donald Knuth
Wassily Kandinsky (Russian, 1866-1944)Abstraction, 1922, Lithograph from the fourth Bauhaus portfolio
30
![Page 31: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/31.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Abstract Data Types (ADTs)
• An ADT is a model of a data structure that specifies– The type of data stored
– Operations supported on these data
• An ADT does not specify how the data are stored or how the operations are implemented.
• The abstraction of an ADT facilitates– Design of complex systems. Representing complex data structures by concise ADTs, facilitates reasoning about and designing large systems of many interacting data structures.
– Encapsulation/Modularity. If I just want to use an object / data structure, all I need to know is its ADT (not its internal workings).
31
![Page 32: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/32.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Hierarchical Design
• Hierarchical class definitions allows efficient re-use of software over different contexts.
Is a
32
![Page 33: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/33.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Abstract Data Types & Interfaces
• Casting
• Generics
• Pseudo-Code
33
![Page 34: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/34.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Inheritance
• Object-oriented design provides for hierarchical classes through the concept of inheritance.
• A subclass specializes or extends a superclass.
• In so doing, the subclass inherits the variables and methods of the superclass.
• The subclass may override certain superclass methods, specializing them for its particular purpose.
• The subclass may also define additional variables and methods that extend the definition of the superclass.
34
![Page 35: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/35.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Types of Method Overriding
• Generally, methods of a subclass replace superclass methods.
• An exception is constructor methods, which do not replace, but refine superclass constructor methods.
• Thus invocation of a constructor method starts with the highest-level class, and proceeds down the hierarchy to the subclass of the object being instantiated.
• This is either accomplished implicitly, or explicitly with the super keyword.
35
![Page 36: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/36.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Refinement Overridingpublic class Camera private String cameraMake;;private String cameraModel;;
Camera(String mk, String mdl) //constructorcameraMake = mk;;cameraModel = mdl;;
public String make() return cameraMake;; public String model() return cameraModel;;
DigitalCamera myCam = new DigitalCamera("Nikon", "D90", 12000000);;
SuperclassCamera
instantiates
Object myCam
extends
SublassDigitalCamera
public class DigitalCamera extends Cameraprivate int numPix;;
DigitalCamera(String mk, String mdl, int n) //constructorsuper(mk, mdl);;numPix = n;;
public int numberOfPixels() return numPix;;
extends
refines
36
![Page 37: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/37.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Refinement Overridingpublic class Camera private String cameraMake;;private String cameraModel;;
Camera(String mk, String mdl) //constructorcameraMake = mk;;cameraModel = mdl;;
public String make() return cameraMake;; public String model() return cameraModel;;
public class DigitalCamera extends Cameraprivate int numPix;;
DigitalCamera(String mk, String mdl) //constructorsuper(mk, mdl);;numPix = 0;;
public int numberOfPixels() return numPix;;
DigitalCamera myCam = new DigitalCamera("Nikon", "D90”);;
extends
instantiates
SuperclassCamera
SublassDigitalCamera
Object myCam
extends
refines
37
![Page 38: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/38.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Refinement Overridingpublic class Camera private String cameraMake;;private String cameraModel;;
Camera() //constructorcameraMake = “Unknown make”;;cameraModel = “Unknown model”;;
public String make() return cameraMake;; public String model() return cameraModel;;
public class DigitalCamera extends Cameraprivate int numPix;;
DigitalCamera() //constructornumPix = 0;;
public int numberOfPixels() return numPix;;
DigitalCamera myCam = new DigitalCamera();;
extends
instantiates
SuperclassCamera
SublassDigitalCamera
Object myCam
extends
refines (implicit super() call)
38
![Page 39: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/39.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Replacement Overridingpublic class DigitalCamera extends Cameraprivate int numPix;;
DigitalCamera(String mk, String mdl, int n) //constructorsuper(mk, mdl);;numPix = n;;
public int numberOfPixels() return numPix;; public byte[][][] getDigitalImage() return takeDigitalPhoto();;
public class AutoDigitalCamera extends DigitalCamera
AutoDigitalCamera(String mk, String mdl, int n) //constructorsuper(mk, mdl, n);;
public byte[][][] getDigitalImage() autoFocus();;return takeDigitalPhoto();;
DigitalCamera myCam = new AutoDigitalCamera("Nikon", "D90", 12000000);;byte[][][] myImage = myCam.getDigitalImage();;
extends
instantiates
SuperclassDigitalCamera
SubclassAuto-
DigitalCamera
Object myCam
replaces
polymorphism39
![Page 40: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/40.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Polymorphism
• Polymorphism = “many forms”
• Polymorphism allows an object variable to take different forms, depending upon the specific class of the object it refers to.
• Suppose an object o is defined to be of class S.
• It is now valid to instantiate o as an object of any type Tthat extends S.
• Thus o can potentially refer to a broad variety of objects.
40
![Page 41: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/41.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Abstract Data Types & Interfaces
• Casting
• Generics
• Pseudo-Code
41
![Page 42: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/42.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Abstract Data Type (ADT)
• A set of data values and associated operations that are precisely specified independent of any particular implementation.
• ADTs specify what each operation does, but not how it does it.
• ADTs simplify the design of algorithms.
42
![Page 43: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/43.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Abstract Data Type (ADT)
• In Java, an ADT – can be expressed by an interface.
– is implemented as a complete data structure by a class.
– is instantiated as an object.
43
![Page 44: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/44.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Application Programming Interfaces (APIs)
• The interface for an ADT specifies:– A type definition
– A collection of methods for this type
– Each method is specified by its signature, comprising• The name of the method
• The number and type of the arguments for each method.
44
![Page 45: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/45.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
ADT Examplepublic interface Device public String make();;public String model();;
public class Camera implements Device
private String cameraMake;;private String cameraModel;;
Camera(String mk, String mdl) //constructorcameraMake = mk;;cameraModel = mdl;;
public String make() return cameraMake;; public String model() return cameraModel;;
Camera myCam = new Camera("Nikon", "D90);;
Interface Device
implements
Class Camera
instantiates
Object myCam
45
![Page 46: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/46.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
ADT Examplepublic interface Device public String make();;public String model();;
Camera myCam = new Camera("Nikon", "D90", true);;
Interface Device
implements
Class Camera
instantiates
Object myCam
46
public class Camera implements Device
private String cameraMake;;private String cameraModel;;private boolean singleLensReflex;;
Camera(String mk, String mdl, boolean SLR) //constructorcameraMake = mk;;cameraModel = mdl;;singlLensReflex = SLR;;
public String make() return cameraMake;; public String model() return cameraModel;; public boolean isSLR() return singleLensReflex;;
specializes
![Page 47: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/47.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Multiple Inheritance
• In Java, a class can have at most one direct parent class.
• Thus classes must form trees.
• This avoids the ambiguity that would arise if two parents defined methods with the same signature.
Device
Camera Actuator
DigitalCamera
AnalogCamera
SteppingMotor
47
![Page 48: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/48.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Multiple Inheritance
• However, classes and interfaces can have more than one direct parent interface.
• Thus interfaces do not necessarily form trees, but directed acylicgraphs (DAGs).
• No ambiguity can arise, since methods with the same signature can be considered as one.
• This allows mixin of unrelated interfaces to form more complex ADTs.
Device
Camera Actuator
Pan/Tilt/ZoomCamera
public interface PTZCamera extends Camera, Actuator …
48
![Page 49: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/49.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Abstract Data Types & Interfaces
• Casting
• Generics
• Pseudo-Code
49
![Page 50: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/50.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Primitive Conversions
Primitive conversions:
Widening (implicit cast):double x;;int y = 1;;x = y;;
Narrowing (explicit cast):double x = 1;;int y;;y = (int) x;;
50
![Page 51: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/51.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Object Conversions
• Casting an object may involve either a widening or a narrowing type conversion.
• A widening conversion occurs when a type T is converted into a ‘wider’ type U.– Example: U is a superclass of T.
– Widening conversions are performed automatically.
• A narrowing conversion occurs when a type T is converted into a ‘narrower’ type U.– Example: U is a subclass of T.
– Narrowing conversions require an explicit cast.
51
![Page 52: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/52.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
DigitalCamera myCam1 = new DigitalCamera("Nikon","D90");;
DigitalCamera myCam2 = new AutoDigitalCamera("Olympus","E30",12000000);;
AutoDigitalCamera myCam3 = new AutoDigitalCamera("Sony","A550",14000000);;
myCam1 = myCam3;; //widening
myCam3 = myCam1;; //narrowing - compiler error
myCam3 = myCam2;; //narrowing - compiler error
myCam3 = (AutoDigitalCamera) myCam1;; //narrowing– generates ClassCastException
myCam3 = (AutoDigitalCamera) myCam2;; // narrowing - valid
Casting Examples
???
?
52
?
![Page 53: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/53.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
DigitalCamera myCam1 = new DigitalCamera("Nikon","D90");;
DigitalCamera myCam2 = new AutoDigitalCamera("Olympus","E30",12000000);;
AutoDigitalCamera myCam3 = new AutoDigitalCamera("Sony","A550",14000000);;
myCam1 = myCam3;; //widening
myCam3 = myCam1;; //narrowing - compiler error
myCam3 = myCam2;; //narrowing - compiler error
myCam3 = (AutoDigitalCamera) myCam1;; //narrowing– generates ClassCastException
myCam3 = (AutoDigitalCamera) myCam2;; // narrowing - valid
Casting Examples
53
![Page 54: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/54.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Abstract Data Types & Interfaces
• Casting
• Generics
• Pseudo-Code
54
![Page 55: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/55.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Generics
• A generic type is a type that is not defined at compilation time.
• A generic type becomes fully defined only when instantiated as a variable.
• This allows us to define a class in terms of a set of formal type parameters, that can be used to abstract certain variables.
• Only when instantiating the object, do we specify the actual type parameters to be used.
55
![Page 56: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/56.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Generics Example/** Creates a coupling between two objects */public class Couple<A, B> A obj1;;B obj2;;
public void set(A o1, B o2) obj1 = o1;;obj2 = o2;;
Camera myCam1 = new DigitalCamera("Nikon","D90”,12000000);;Camera myCam2 = new AutoDigitalCamera("Olympus","E30",12000000);;
Couple<Camera,Camera> stereoCamera = new Couple<>();;
stereoCamera.set(myCam1, myCam2);;
56
![Page 57: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/57.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Generics Example
• Note that two things are happening here:1. The variable stereoCamera is being defined of type
Couple<Camera, Camera>
2. An object of type Couple<Camera, Camera> is created and stereoCamera is updated to refer to that object.
Couple<Camera,Camera> stereoCamera = new Couple<>();;
57
![Page 58: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/58.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Inheritance with Generics
• Generic classes can serve as superclasses or subclasses of other generic and non-generic classes.
• Thus, for example, if a class CloselyCouple<T, T> is defined to extend Couple<T, T>, then it would be valid to instantiate stereoCamera as:
Couple<Camera,Camera> stereoCamera = new Couple<>();;
Couple<Camera,Camera> stereoCamera = new CloselyCouple<>();;
58
![Page 59: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/59.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
But be careful…
• DigitalCamera is a subclass of Camera.
• This does NOT mean that Couple<DigitalCamera, DigitalCamera> is a subclass of Couple<Camera, Camera>.
59
![Page 60: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/60.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Abstract Data Types & Interfaces
• Casting
• Generics
• Pseudo-Code
60
![Page 61: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/61.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Pseudocode
• High-level description of an algorithm
• More structured than English prose
• Less detailed than a program• Preferred notation for describing algorithms
• Hides program design issues
Algorithm arrayMax(A, n)Input array A of n integersOutput maximum element of AcurrentMaxß A[0]for I ß 1 to n - 1 doif A[i] > currentMax thencurrentMaxß A[i]
return currentMax
Example: find max element of an array
61
![Page 62: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/62.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Pseudocode Details
• Control flow– if… then… [else…]
– while… do…– repeat… until…
– for… do…– Indentation replaces braces
• Method declarationAlgorithm method (arg [, arg…])
Input…Output…
• Method callvar.method (arg [, arg…])
• Return valuereturn expression
• Expressionsß Assignment(like = in Java)
= Equality testing(like == in Java)
n2 Superscripts and other mathematical formatting allowed
62
![Page 63: EECS%2011%Fundamentalsof%Data%Structures€¦ · Last%Updated:%%Jan%4,%2018 EECS2011 Prof.%J.%Elder Course%Website • 3](https://reader033.vdocument.in/reader033/viewer/2022060308/5f0a39767e708231d42a9d22/html5/thumbnails/63.jpg)
Last Updated: Jan 4, 2018EECS 2011Prof. J. Elder
Data Structures & Object-Oriented Design• Definitions
• Principles of Object-Oriented Design
• Hierarchical Design in Java
• Abstract Data Types & Interfaces
• Casting
• Generics
• Pseudo-Code
63