CISC124 - Notices Assn 2 due this Friday. You already know what you need to do this assignment: –Another procedural program. –Uses text file I/O (see Exercise.

Slides:



Advertisements
Similar presentations
The Line Class Suppose you are involved in the development of a large mathematical application, and this application needs an object to represent a Line.
Advertisements

Composition CMSC 202. Code Reuse Effective software development relies on reusing existing code. Code reuse must be more than just copying code and changing.
Written by: Dr. JJ Shepherd
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
1 Using Classes Object-Oriented Programming Using C++ Second Edition 5.
Using Classes Object-Oriented Programming Using C++ Second Edition 5.
An Introduction to Java Chapter 11 Object-Oriented Application Development: Part I.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Today: –Review declaration, implementation, simple class structure. –Add an exception class and show.
Written by: Dr. JJ Shepherd
Winter 2006CISC121 - Prof. McLeod1 Last Time Reviewed class structure: –attributes –methods –(inner classes) Looked at the effects of the modifiers: –public.
Today Review passing by reference and pointers. null pointers. What is an Object? Winter 2016CMPE212 - Prof. McLeod1.
Winter 2016CISC101 - Prof. McLeod1 CISC101 Reminders Assignment 5 is posted. Exercise 8 is very similar to what you will be doing with assignment 5. Exam.
Today Encapsulation. Build a fully encapsulated Halloween class, going from Halloween1 to Halloween6 (eventually!): –The final version will have overloaded.
Notices Assn 2 is due Friday, 7pm. Moodle quiz next week – written in the lab as before. Everything up to and including Thursday’s lecture: Big Topics.
Topic: Classes and Objects
Creating and Using Objects, Exceptions, Strings
EECE 310: Software Engineering
Programming Logic and Design Seventh Edition
Classes and OOP.
7. Inheritance and Polymorphism
objects CIS 421 Kutztown University
Chapter 3: Using Methods, Classes, and Objects
CISC/CMPE320 - Prof. McLeod
Object-Oriented Principles and Implementations
Winter 2018 CMPE212 9/18/2018 CMPE212 – Stuff…
Fall 2017 CISC124 9/18/2018 CISC124 First onQ quiz this week – write in lab. More details in last Wednesday’s lecture. Repeated: The quiz availability.
CMPE212 – Stuff… Assn 2 due next Friday. Winter 2018
Fall 2017 CISC124 9/21/2018 CISC124 First onQ quiz this week – write in lab. More details in last Wednesday’s lecture. Repeated: The quiz availability.
CMPE212 – Stuff… Exercises 4, 5 and 6 are all fair game now.
.NET and .NET Core 5.2 Type Operations Pan Wuming 2016.
Winter 2018 CMPE212 11/12/2018 CMPE212 – Stuff…
CS139 – Fall 2010 How far we have come
Object Based Programming
Phil Tayco Slide version 1.0 Created Oct 16, 2017
CISC124 Assignment 4 on Inheritance due next Monday, the 12th at 7pm.
CISC124 Assignment 4 on Inheritance due next Monday, the 12th at 7pm.
CISC124 Assignment 4 on Inheritance due next Monday, the 12th at 7pm.
CISC101 Reminders Slides have changed from those posted last night…
CISC124 Quiz 1 marking nears completion!
Outline Writing Classes Copyright © 2012 Pearson Education, Inc.
Fall 2018 CISC124 12/1/2018 CISC124 Note that the next assignment, on encapsulation, is due next Wednesday at 7pm – not Friday. The next Quiz is not until.
Object-Oriented Programming Using C++ Second Edition
Fall 2018 CISC124 12/3/2018 CISC124 or talk to your grader with questions about assignment grading. Fall 2018 CISC124 - Prof. McLeod Prof. Alan McLeod.
CISC101 Reminders Quiz 2 graded. Assn 2 sample solution is posted.
CISC101 Reminders Quiz 1 grading underway Next Quiz, next week.
Dynamic Data Structures and Generics
CISC124 Assignment 3 due tomorrow at 7pm.
CISC124 Assignment 4 on Inheritance due next Friday.
CISC/CMPE320 - Prof. McLeod
Fall 2018 CISC124 2/15/2019 CISC124 TA names and s will be added to the course web site by the end of the week. Labs start next week in JEFF 155:
CISC124 Labs start this week in JEFF 155. Fall 2018
Fall 2018 CISC124 2/22/2019 CISC124 Quiz 1 This Week. Topics and format of quiz in last Tuesday’s notes. The prof. (me!) will start grading the quiz.
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
CISC/CMPE320 - Prof. McLeod
Fall 2018 CISC124 2/24/2019 CISC124 Quiz 1 marking is complete. Quiz average was about 40/60 or 67%. TAs are still grading assn 1. Assn 2 due this Friday,
Introduction to Data Structure
CMPE212 – Reminders Assignment 3 due next Friday.
CISC101 Reminders Assignment 3 due next Friday. Winter 2019
Last Time Some discussion of program “efficiency”. Arrays – 1D and 2D
CMPE212 – Reminders Quiz 1 marking underway. Assignment 1 due today.
CMPE212 – Reminders Quiz 1 marking done. Assignment 2 due next Friday.
Winter 2019 CMPE212 5/3/2019 CMPE212 – Reminders
Winter 2019 CMPE212 5/10/2019 CMPE212 – Reminders
CMPE212 – Reminders Assignment 2 due in a week.
Winter 2019 CISC101 5/26/2019 CISC101 Reminders
CMPE212 – Reminders Assignment 2 due next Friday.
CMPE212 – Reminders Assignment 4 on Inheritance due next Friday.
Chapter 7 Objects and Classes
Presentation transcript:

CISC124 - Notices Assn 2 due this Friday. You already know what you need to do this assignment: –Another procedural program. –Uses text file I/O (see Exercise 4). –Also methods and arrays. Quiz 1 marks are still not properly reported in onQ “Grades”. Look at the quiz and the mark sum is correct, but the grade is out of 60, not 62. Fall 2016CISC124 - Prof. McLeod1

Today Recursion? What is an Object? Encapsulation. Start building the Halloween class. Fall 2016CISC124 - Prof. McLeod2

Use of Recursion in Assignment 1 Submissions You do not need to use recursion in assignment 1, or in any of the assignments for this course. Never use tail recursion – use a loop instead. Watch out for indirect recursion (methodA calls methodB calls methodC which calls methodA). Improper use of recursion makes code difficult to trace and leads to stack overflows. And recursion is slower than using loops! Fall 2016CISC124 - Prof. McLeod3

What Is An Object? A definition that would apply to any programming language: An entity that exists in an operating computer program that has: –State –Behaviour –Identity Fall 2016CISC124 - Prof. McLeod4

What Is An Object?, Cont. The State of an Object is the collection of information held in that object. This information may change over time, as a result of operations carried out on the Object. The Behaviour is the collection of operations that an Object supports. The Identity of an Object allows the program access to a specific Object. Fall 2016CISC124 - Prof. McLeod5

What Is An Object?, Cont. An Object represents real or abstract entities. An Object representing a real entity, for example: –The State is awake, hungry and purring. –The Behavior is scratchingSofa. –The Identity is ginger. Fall 2016CISC124 - Prof. McLeod6

What is a Class? You can have many (possibly infinite!) different Objects with different values for each State category (or attribute!). But if each of these Objects has the same set of possible behaviours then you can group these Objects together into a Class. For the example, the class would be “Cat”. ginger, felix, sylvester, belle, etc. are all Objects and are instances of Cat. Most (but not all) OO programming languages support the definition of classes. Fall 2016CISC124 - Prof. McLeod7

What is a Class?, Cont. A class is defined in the source code of a program. It defines: –The operations that are allowed on instances of this class (the methods). –The possible categories of state that are allowed for instances of this class (the attributes). Instances of a class are created when the program is running. Fall 2016CISC124 - Prof. McLeod8

What is a Class?, Cont. The State of an Object instance can be partly or completely defined when the instance is created. The State will likely change when operations are carried out on the instance. However, attributes cannot be added or removed and behavior cannot be added or removed. These are defined in the Class. Fall 2016CISC124 - Prof. McLeod9

Object Categories In a program, Objects will probably fall into one of these general categories: –Tangible things (ex: Cat ) –Agents ( StringTokenizer ) –Events and transactions ( MouseEvent ) –Users and roles ( Administrator ) –Systems ( MailSystem ) –System interfaces and devices ( File ) –Foundational classes ( String ) Fall 2016CISC124 - Prof. McLeod10

Object Extremes Two extremes of object structure: –Utility classes: All static methods and attributes –The Math class, for example. –You do not instantiate these classes – there is no point. –Customizable classes: All non- static methods and attributes. –Attribute values (some or all) must be set at the time of instantiation before the class can be used. –Scanner class for example. Fall 2016CISC124 - Prof. McLeod11

Objects, Cont. And many classes fall in-between these two extremes: –A mix of static and non- static methods. –static methods have nothing to do with the attributes and so can be used without instantiation of the class. –Non- static methods depend on the attributes which must be set through instantiation. –Wrapper classes for example: Double, Integer, etc. Fall 2016CISC124 - Prof. McLeod12

Encapsulation Encapsulation is the process of defining a Class that has at least one customizable attribute. Encapsulation is about the abstraction or containment of the attributes defined in the class. In Java, methods and attributes must be encapsulated or contained in a class definition. We have not yet built any classes with attributes that must be set upon instantiation. Time to start! Fall 2016CISC124 - Prof. McLeod13

Fall 2016CISC124 - Prof. McLeod14 Encapsulation, Cont. The Best Object Design: –Supports the re-usability of code. –Provides a well-defined interface to other objects and the user(s). –Builds into an Object the code that ensures the integrity of the data stored in the Object by: Making sure that initial data values are “legal”. Controlling (or preventing) changes to data. Preventing “privacy leaks” when data is returned out of an Object. –Works well with modular design practices making code easier to write, test and debug.

Fall 2016CISC124 - Prof. McLeod15 Encapsulation, Cont. This is the driving principle for the design of all Objects in the Java API! –So, maybe you should design your own Objects using the same principle? Java API Your class

An Example Consider the general model (or “pattern”...) of a database: Fall 2016CISC124 - Prof. McLeod16 record 2 record 1 record 3 record 4 record 5 record Collection DatabaseUser Interface Add Delete Edit Sort Find Save Load... Edit Forms Queries Reports... User Each record is an instance of an Object, too.

An Example, Cont. For now, we will focus on just how to define one of the many objects needed for the database – the object that will be used to define the record structure – a “Foundational” Object. If each record only held one piece of data, we would not need an object for each record – the Collection could just be an array. But – more typically – each database record will hold several pieces of data. Fall 2016CISC124 - Prof. McLeod17

Fall 2016CISC124 - Prof. McLeod18 An Example, Cont. Suppose you want to create a database to store records of Halloween visits. (Maybe we are going to build a model to predict the number of visitors for given weather conditions so we can predict how much candy to buy!) For each year, you wish to record: –The year. –Number of munchkins banging at your door. –Outdoor temperatures (one reading per hour) in deg C. –Weather condition – “rain”, “snow”, or “clear”.

Fall 2016CISC124 - Prof. McLeod19 An Example, Cont. What would you do without objects?: You could create four arrays, one for each of the fields. –Difficult to code when moving records around. –Suppose some record swap or delete is messed up and the records get out of sync – how would you know? year numbertempcondition a record: 2D array?

Fall 2016CISC124 - Prof. McLeod 20 An Example, Cont. It would be easier to design a Class that contains (or encapsulates) these four fields and then design another class to collect instances of this Class. –No way the fields could get out of sync since moving a record moves all fields at once. year number temp array condition record 2 record 1 record 3 record 4 record 5 record Collection

Fall 2016CISC124 - Prof. McLeod21 Halloween1 Class public class Halloween1 { public int year; public int numMunchkins; public int[] temperatures; public String weatherCondition; } // end Halloween1 We can define the State of an instance of Halloween1, but it does not yet have any Behavior (methods)!

Fall 2016CISC124 - Prof. McLeod22 Halloween1, Cont. In a method in some other class: Halloween1[] hwDB = new Halloween1[100]; hwDB[0] = new Halloween1(); hwDB[0].year = 1992; hwDB[0].numMunchkins = 200; int[] temp = {10, 9, 7, 6}; hwDB[0].temperatures = temp; hwDB[0].weatherCondition = "rain"; instantiation define the State Identity

Fall 2016CISC124 - Prof. McLeod23 Halloween1, Cont. A question: Why not declare the attributes in Halloween1 static ? Every instance of a class shares static members – there is only one copy of each static member in memory. If the attributes were static then each instance of Halloween1 would have the same values!

Fall 2016CISC124 - Prof. McLeod24 Halloween1, Cont. Another question: What is wrong with the following?: hwDB[1] = new Halloween1(); hwDB[1].year = 3011; hwDB[1].numMunchkins = -200; int[] temp = {100, 200}; hwDB[1].temperature = temp; hwDB[1].weatherCondition = "frogs";

Fall 2016CISC124 - Prof. McLeod25 Halloween1, Cont. The object, hwDB[1] is not particularly realistic. How can we prevent the creation of an object like this? Who is responsible for checking for realistic, or “legal” values for the attributes? The Halloween1 class or the class that uses it? Where is it easiest to put these checks?

Fall 2016CISC124 - Prof. McLeod26 Encapsulation, Cont. Attributes must be declared private, so that the class that owns them can control how they are set. If attributes are private then how can a user of the class assign the values of the attributes? Through methods, of course! –Constructor(s) –Mutator(s) when instantiated only anytime after instantiation

Fall 2016CISC124 - Prof. McLeod27 Encapsulation, Cont. Within these methods, you can write code to check the parameters for validity. What do you do if the values are not legal? Throw an exception! We need to start adding Behaviour to our Class.