CMSC 202 Classes and Objects. Aug 6, 2007 2 Programming Languages All programming languages provide some form of abstraction Procedural language (eg C)

Slides:



Advertisements
Similar presentations
Classes and Objects CMSC 202. Version 9/122 Programming & Abstraction All programming languages provide some form of abstraction. – Also called information.
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.
 Both System.out and System.err are streams—a sequence of bytes.  System.out (the standard output stream) displays output  System.err (the standard.
CMSC 202 Fall 2010, Advanced Section Designing with Objects.
Introduction to Object-Oriented Programming CS 21a: Introduction to Computing I First Semester,
Defining classes and methods Recitation – 09/(25,26)/2008 CS 180 Department of Computer Science, Purdue University.
Road Map Introduction to object oriented programming. Classes
Functions Most useful programs are much larger than the programs that we have considered so far. To make large programs manageable, programmers modularize.
Terms and Rules Professor Evan Korth New York University (All rights reserved)
1 Chapter 8 Objects and Classes. 2 Motivations After learning the preceding chapters, you are capable of solving many programming problems using selections,
1 Chapter One A First Program Using C#. 2 Objectives Learn about programming tasks Learn object-oriented programming concepts Learn about the C# programming.
A First Program Using C#
CMSC 202 Interfaces. 11/20102 Classes and Methods When a class defines its methods as public, it describes how the class user interacts with the method.
Programming Languages and Paradigms Object-Oriented Programming.
Writing Classes (Chapter 4)
Chapter 6 Structures and Classes. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 6-2 Structures  2 nd aggregate data type: struct  Recall:
CMSC 202 Exceptions. Aug 7, Error Handling In the ideal world, all errors would occur when your code is compiled. That won’t happen. Errors which.
Introduction to Object-Oriented Programming
CCSA 221 Programming in C CHAPTER 14 MORE ON DATA TYPES 1 ALHANOUF ALAMR.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
The Java Programming Language
Classes CS 21a: Introduction to Computing I First Semester,
Chapter 7 Objects and Classes 1 Fall 2012 CS2302: Programming Principles.
Objects and Classes Chapter 6 CSCI CSCI 1302 – Objects and Classes2 Outline Introduction Defining Classes for Objects Constructing Objects Accessing.
Copyright 2004 Scott/Jones Publishing Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 7 Structured Data and Classes.
C++ Programming Basic Learning Prepared By The Smartpath Information systems
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
Chapter 10 Defining Classes. The Internal Structure of Classes and Objects Object – collection of data and operations, in which the data can be accessed.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 26 - Java Object-Based Programming Outline 26.1Introduction.
Chapter 4&5 Defining Classes Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
CMSC 202 Classes and Objects: The Basics. Version 9/09 2 Programming & Abstraction All programming languages provide some form of abstraction. –Also called.
Visual Basic for Application - Microsoft Access 2003 Programming applications using Objects.
IT108 Objects and Classes Part I George Mason University Revised 4/3/2012.
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 6 Objects and Classes.
CMSC 202 Advanced Section Classes and Objects: Object Creation and Constructors.
CMSC 202 Java Classes and Object 2nd Lecture. Aug 6, Stack and Heap When your program is running, some memory is used to store local variables.
Objective You will be able to define the basic concepts of object-oriented programming with emphasis on objects and classes by taking notes, seeing examples,
CMSC 202 CMSC 202, Advanced Section Classes and Objects In Java.
72 4/11/98 CSE 143 Abstract Data Types [Sections , ]
Defining Classes I Part B. Information hiding & encapsulation separate how to use the class from the implementation details separate how to use the class.
© 2006 Pearson Addison-Wesley. All rights reserved 1-1 Chapter 1 Review of Java Fundamentals.
OOP Basics Classes & Methods (c) IDMS/SQL News
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 6-1 Learning Objectives  Classes  Constructors  Principles of OOP  Class type member.
Chapter 4 Defining Classes I Slides prepared by Rose Williams, Binghamton University Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
CMSC 202 Lesson 8 Classes II. Warmup Declare a class (.h part) named “Cup” It has a data member that says how full it is One method called “Drink” that.
Lecture 3: Introduction to Object and Classes Michael Hsu CSULA.
Classes and Objects: Encapsulation
Classes & Objects CMSC 202.
Classes and Objects 2nd Lecture
Methods The real power of an object-oriented programming language takes place when you start to manipulate objects. A method defines an action that allows.
CMSC 202 Static Methods.
Classes and Objects: Encapsulation
Chapter 3 Introduction to Classes, Objects Methods and Strings
Classes and Objects Encapsulation
Classes and Objects 5th Lecture
Java Classes and Objects 3rd Lecture
Defining Classes and Methods
Java Classes and Objects
CMSC 202 Classes and Objects.
CMSC 202 Interfaces.
Classes and Objects Static Methods
Defining Classes and Methods
Classes CS 21a: Introduction to Computing I
Introduction to Object-Oriented Programming
Classes, Objects and Methods
CS 1054: Lecture 2, Chapter 1 Objects and Classes.
CMSC 202 Encapsulation Version 9/10.
Classes and Objects Object Creation
CMSC 202 Constructors Version 9/10.
Presentation transcript:

CMSC 202 Classes and Objects

Aug 6, Programming Languages All programming languages provide some form of abstraction Procedural language (eg C) abstraction requires thinking in terms of the underlying computer (data areas, sequential statement execution) Object-oriented languages allow abstraction of the elements of the problem

Aug 4, 2008Adapted from "Thinking in Java" by Bruce Eckel 3 Objects Elements in the problem are referred to as objects Examples Car Bank account String Each object has State represented by internal data Behaviors produced by methods

July 21, What’s a class From the dictionary a kind or category A set, collection, group, or configuration containing members regarded as having certain attributes or traits in common From OOP (Rumbaugh, et al) A class describes a group of objects with similar properties, common behavior, common relationships with other objects, and common semantics Examples

Aug 6, Classes All objects are unique Objects which are identical except for their state can be grouped into a class Class of cars Class of birds Class of playing cards Defining classes is a fundamental concept in OOP

July 21, A class is a model A class is a model for a group of objects The focus of the class is the common behavior of the objects the class models. A class’ behavior may also referred to as a service, operation, action, or command. The model also contains common attributes of the objects The attributes exit to support the model’s behaviors

Aug 6, A class is a type Variables of the class type may be created just like variables of built-in types You can create as many objects of the class type as you like OOP challenge is to create the objects that match the problem

Aug 6, 2007Adapted from "Thinking in Java" by Bruce Eckel 8 Object Interface The requests you can make so an object will do something are determined by its interface The interface is determined by its type LightBulb on( ) off( ) brighten( ) dim( ) TYPE INTERFACE

Aug 6, 2007Adapted from "Thinking in Java" by Bruce Eckel 9 Implementation Code and hidden data within the object that satisfies the requests comprise the implementation Each request in the interface has an associated method. When a particular request is made, that method is called. In OO-speak we say that you are “sending a message” to the object which responds to the message by executing the appropriate code.

Aug 6, Class Definitions You already know how to use classes and the objects created from them, and how to invoke their methods For example, you have already been using the predefined String Now you will learn how to define your own classes and their methods, and how to create your own objects from them Copyright © 2008 Pearson Addison-Wesley. All rights reserved

Aug 6, A Class Is a Type A class is a special kind of programmer-defined type, and variables can be declared of a class type A value of a class variable type is called an object or an instance of the class If A is a class, then the phrases “X is of type A“ “X is an object of the class A" “X is an instance of the class A" mean the same thing A class determines the actions it can perform and the types of data that required to support those actions Copyright © 2008 Pearson Addison-Wesley. All rights reserved

Aug 6, The Class Definition A class definition implements the class model The class behaviors/services/actions/operations are implemented by class methods. The class attributes (data items) are called fields or instance variables. In Java, classes are defined in files with the.java extension. The name of the file must match the name of the class defined within it. Copyright © 2008 Pearson Addison-Wesley. All rights reserved

July 21, Objects All objects of a class have the same methods All objects of a class have the same attributes (i.e., name, type, and number) For different objects, each attribute can hold a different value The values of the attributes define the object state which is what makes each object unique. Copyright © 2008 Pearson Addison-Wesley. All rights reserved

Aug 6, Class Examples What services/behaviors might be appropriate for the following things A red-green-yellow traffic light A garage door opener A bank account

Aug 6, Anatomy of a Java Class Visibility modifier (More on this later) Name of the class Keyword class publicclass Date1 { } Class body: instance variables, methods NO semi-colon

Aug 6, Instance Variables are defined inside the class definition. may be primitive types or other class types are accessible by all methods of the class i.e. have “class scope” Given the services identified for the red- green-yellow traffic light, the garage door opener and the bank account, what instance variables might be defined for each?

Anatomy of a method Class methods are very much like functions. Methods include a visibility modifier, return type, method name, and optional parameters Visibility modifier (More on this later) Name of the method return type publicdouble toCelcius { } Method code: local variables and statements (double fTemp) Optional parameters

Aug 6, A Date Class The code below defines a class named Date1. This class definition goes in a file named Date1.java public class Date1 { public String month; public int day; public int year; public void print( ) { System.out.println(month + “ “ + day + “, “ + year); } These are the (public)“data members” or “instance variables” of the class This is a method definition and its implementation A method may use the class’ instance variables

Aug 6, Date1 print print is a method of the Date1 class. Its definition and implementation are part of the Date1 class. Like functions in C, class methods may be void, return a value, and (optionally) have parameters. Method parameters may be primitive types passed by value or may be objects (which need further discussion later). All class methods have access to all class instance variables.

Aug 6, Using Date1 We can create instances of Date1, modify, and print the date. This class definition (program) goes in a file named Date1Demo.java public class Date1Demo { public static void main( String[ ] args ) { Date1 myDate; myDate = new Date1( ); myDate.month = “July”; myDate.day = 4; myDate.year = 2007; myDate.print( ); } Create a Date1 object named myDate Give values to the data members Invoke the print method

Aug 6, Creating the Date1 Object The statement Date1 myDate; defines a variable of type Date1. But there is no Date1 object yet! The statement myDate = new Date1( ); creates a “new” Date1 object and names it with the variable “myDate”. Now “myDate” refers to a Date1 object For convenience, these statements can be combined Date1 myDate = new Date1( ); (continued)

Aug 6, “Dot” notation Public instance variables of an object are referenced using the “dot” operator (like members of a struct in C) myDate.month = “July”; myDate.day = 4; myDate.year = 2007; Instance variable can be used like any other variable of the same type. The set of values stored in all instance variables define the state of the myDate object. (continued)

Aug 6, “Dot” notation The print method of myDate is invoked using the “dot” operator (again similar to accessing a member in a C struct). The statement myDate.print( ); invokes the print method of myDate which refers to an object of type Date1. In OO terminology we say that we are “sending the print message” to the object referred to by myDate. The object myDate is referred to as the “calling object ” or “ host object ”. It is the object in which the print method is invoked.

Aug 6, Other Date Methods Some other possible services which the Date class might provide include incrementDay - changes the date to “tomorrow” printDMY - a different printing format setDate - initialize/change the year, month, and/or day What others ?

New Date1 Methods // change the month (using an int), day, and year. public void setDate( int newMonth, int newDay, int newYear ) { month = monthString( newMonth ); day = newDay; year = newYear; } // change month number (int) to string - used by setDate public String monthString( int monthNumber ) { switch ( monthNumber ) { case 1: return "January"; case 2: return "February"; case 3: return "March"; case 4: return "April"; case 5: return "May"; case 6: return "June"; case 7: return "July"; case 8: return "August"; case 9: return "September"; case 10: return "October"; case 11: return "November"; case 12: return "December"; default: return “????”; }

Jan 23, Confusion In the preceding setDate method it’s tempting to define the method using the common terms “month”, “day” and “year” as the parameters. public void setDate( int month, int day, int year) { month = monthString( month );// which month is which? day = day;// which day is which? year = year;// which year is which? } The problem with this code is that the compiler assumes that all uses of day, month, and year refer to the method parameters and hence this code has no effect.

Jan 23, Calling Object When any class method is called, the instance variables used within the method are assumed to belong to the calling object. What the code in setDate is really trying to do is public void setDate( int month, int day, int year) { “calling object”.month = monthString( month ); “calling object”.day = day; “calling object”.year = year; } It’s handy (and sometimes necessary) to have a name for the calling object. In Java, we use the reserved word this as the generic name of the calling object. (continued)

Jan 23, Using this So, if we want to name our parameters the same as our instance variables, we could write the setDate method as public void setDate( int month, int day, int year) { this.month = monthString( month ); this.day = day; this.year = year; } Note that many examples in the text use this technique for class methods and some Java programmer tools (including Eclipse) use this technique when writing code for you.

Aug 6, this again As a final example, recall the print method from Date1 public void print( ) { System.out.println(month + “ “ + day + “ “ + year); } Here it’s clear that month, day, and year refer to the instance variables of the calling object because there are no parameters. To be more explicit we could have written public void print( ) { System.out.println(this.month + “ “ + this.day + “ “ + this.year); } With no chance for confusion, using the prefix this is unnecessary and usually omitted.

Aug 6, Method Documentation Clear communication with the class user is of paramount importance so that he can use the appropriate method, and use class methods properly. Method comments: explain what the method does, and describe how to use the method. Two important types of method comments: precondition comments post-conditions comments

Aug 6, Preconditions and Postconditions Precondition What is assumed to be true when a method is called If any pre-condition is not met, the method cannot correctly perform its function. Postcondition Describes the effect of the method States what will be true after the method executes (assuming all pre-conditions are met)

Aug 6, A Simple Example Recall the print method from Date2 that outputs the month string, day, and year to the screen. The print method might look something like this: /* PreCondition:none PostCondition: The calling object has been written to the screen in the format, */ public void print( ) { // code here }

Aug 6, Another Common Example Very often the precondition specifies the limits of the parameters and the postcondition says something about the return value. /* Pre-condition: 1 <= month <= 12 day appropriate for the month 1000 <= year <= 9999 Post-condition: The month, day, and year of the calling object have been set to the parameter values. Returns true if the calling object has been changed. Returns false otherwise */ public boolean setDate( int month, int day, int year) { // code here }

Sept 7, Date1 Code Example Date1 newYears = new Date1( ); newYears.month = “January”; newYears.day = 1; newYears.year = 2008; Date1 birthday = new Date1( ); birthday.month = “July”; birthday.day = 4; birthday.year = 1776; newYears.print( );// line 1 birthday.print( );// line 2 System.out.println(birthday.monthString(6));// line 3 birthday.setDate( 2, 2, 2002);// line 4 birthday.print( );// line 5 newYears.day = 42;// line 6 newYears.print( );// line 7

Sep 7, January 42, 2008 It appears that classes allow the user to change the data anytime he chooses and can possibly make the data invalid That’s true so far because we have defined our instance variables with public access. This is rarely the case in real applications. Our focus today was on classes vs objects and the syntax used for accessing methods. Next time we’ll see a more robust class that will prevent the user from making our data invalid.