CLASSES AND OBJECTS. Fundamentals of Computer Science I

Similar documents
A foundation for programming. Classes and objects. Overview. Java primitive types. Primitive types Creating your own data types

CLASSES AND OBJECTS. Fundamentals of Computer Science I

Classes and objects. Chapter 2: Head First Java: 2 nd Edi4on, K. Sierra, B. Bates

BASIC COMPUTATION. public static void main(string [] args) Fundamentals of Computer Science I

Object-Oriented Programming Concepts

Introduction to Programming Using Java (98-388)

More on methods and variables. Fundamentals of Computer Science Keith Vertanen

Designing data types. Overview. Object Oriented Programming. Alan Kay. Object Oriented Programming (OOP) Data encapsulation. Checking for equality

The life and death of objects, sta2cs. CSCI 136: Fundamentals of Computer Science II Keith Vertanen

CSCI 135 Exam #2 Fundamentals of Computer Science I Fall 2013

Designing data types. Fundamentals of Computer Science I

CS 251 Intermediate Programming Methods and Classes

CS 251 Intermediate Programming Methods and More

Agenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java

CSCI 135 Exam #2 Fundamentals of Computer Science I Fall 2013

Computer Science II. OO Programming Classes Scott C Johnson Rochester Institute of Technology

CS121/IS223. Object Reference Variables. Dr Olly Gotel

CSCI 135 Exam #1 Fundamentals of Computer Science I Fall 2014

Object Oriented Design: Building a Fraction Class

JAVA MOCK TEST JAVA MOCK TEST II

AP Computer Science Chapter 10 Implementing and Using Classes Study Guide

Java Class Design. Eugeny Berkunsky, Computer Science dept., National University of Shipbuilding

JAVA GUI PROGRAMMING REVISION TOUR III

CSCI 135 Midterm Fundamentals of Computer Science I Fall 2011

A Foundation for Programming

Fundamentals of Programming Data Types & Methods

Java Classes & Primitive Types

PROGRAMMING FUNDAMENTALS

Java Classes & Primitive Types

Binghamton University. CS-140 Fall Problem Solving. Creating a class from scratch

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018

Objects and Classes. 1 Creating Classes and Objects. CSCI-UA 101 Objects and Classes

A Founda4on for Programming

Chapter 4 Defining Classes I

CSE 201 JAVA PROGRAMMING I. Copyright 2016 by Smart Coding School

CS 112 Introduction to Programming

Admin. CS 112 Introduction to Programming. Recap: Java Static Methods. Recap: Decomposition Example. Recap: Static Method Example

Built-in data types. logical AND logical OR logical NOT &&! public static void main(string [] args)

INDEX. A SIMPLE JAVA PROGRAM Class Declaration The Main Line. The Line Contains Three Keywords The Output Line

Introduction to Java Programming

Introduction to Java

Built-in data types. public static void main(string [] args) logical AND logical OR logical NOT &&! Fundamentals of Computer Science

Selected Questions from by Nageshwara Rao

CSCI 135 Exam #1 Fundamentals of Computer Science I Fall 2012

Review questions. Review questions, cont d. Class Definition. Methods. Class definition: methods. April 1,

Getting started with Java

Object Oriented Programming

Lecture 3. COMP1006/1406 (the Java course) Summer M. Jason Hinek Carleton University

Another IS-A Relationship

ECE 122. Engineering Problem Solving with Java

Research Group. 2: More types, Methods, Conditionals

Review. Primitive Data Types & Variables. String Mathematical operators: + - * / % Comparison: < > <= >= == int, long float, double boolean char

Object Class. EX: LightSwitch Class. Basic Class Concepts: Parts. CS257 Computer Science II Kevin Sahr, PhD. Lecture 5: Writing Object Classes

CS 231 Data Structures and Algorithms, Fall 2016

Condi(onals and Loops

Timing for Interfaces and Abstract Classes

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created.

Program Fundamentals

CSE 142 Su 04 Computer Programming 1 - Java. Objects

DATA TYPES AND EXPRESSIONS

Lecture Set 4: More About Methods and More About Operators

Creating Classes and Objects

CHAPTER 7 OBJECTS AND CLASSES

Wrapper Classes double pi = new Double(3.14); 3 double pi = new Double("3.14"); 4... Zheng-Liang Lu Java Programming 290 / 321

cis20.1 design and implementation of software applications I fall 2007 lecture # I.2 topics: introduction to java, part 1

Visual Programming. Lecture 2: More types, Methods, Conditionals

9 Working with the Java Class Library

CS 106 Introduction to Computer Science I

Array. Prepared By - Rifat Shahriyar

1.1 Your First Program

Binghamton University. CS-140 Fall Data Types in Java

Inf1-OOP. Data Types. Defining Data Types in Java. type value set operations. Overview. Circle Class. Creating Data Types 1.

Data Structures. Data structures. Data structures. What is a data structure? Simple answer: a collection of data equipped with some operations.

CSC Java Programming, Fall Java Data Types and Control Constructs

Midterm I - CSE11 Fall 2013 CLOSED BOOK, CLOSED NOTES 50 minutes, 100 points Total.

Assignment 1 due Monday at 11:59pm

McGill University School of Computer Science COMP-202A Introduction to Computing 1

Variables and data types

Java Identifiers, Data Types & Variables

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

Chapter 15: Object Oriented Programming

Lecture 2. COMP1406/1006 (the Java course) Fall M. Jason Hinek Carleton University

1 Shyam sir JAVA Notes

Lecture Notes CPSC 224 (Spring 2012) Today... Java basics. S. Bowers 1 of 8

Java Object Oriented Design. CSC207 Fall 2014

Exam 1 - (20 points)

Options for User Input

A Foundation for Programming

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014

Week 6: Review. Java is Case Sensitive

JAVA OPERATORS GENERAL

Object-Oriented Programming. Topic 2: Fundamental Programming Structures in Java

CS 302 Week 9. Jim Williams

And Even More and More C++ Fundamentals of Computer Science

CIS3023: Programming Fundamentals for CIS Majors II Summer 2010

Programming Basics. Digital Urban Visualization. People as Flows. ia

About this exam review

Object-Oriented Programming

Lecture Set 4: More About Methods and More About Operators

Expressions & Flow Control

Transcription:

CLASSES AND OBJECTS Fundamentals of Computer Science I

Outline Primitive types Creating your own data types Classes Objects Instance variables Instance methods Constructors Arrays of objects

A Foundation for Programming any program you might want to write objects functions and modules build even bigger programs and reuse code http://www.flickr.com/photos/vermegrigio/5923415248/ graphics, sound, and image I/O arrays conditionals and loops Math primitive data types text I/O assignment statements 3

Java Primitive Types Java type what it stores examples byte short int long tiny integer values -128 to 127 small integer values -32768 to 32767 integer values -2,147,483,648 to 2,147,483,647 big integer values -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 3-87 -3433 123 42 1234 5454-43984938 double floating-point values 9.95 3.0e8 float less precise floating-point values 9.95f 3.0e8f boolean truth values true false char characters 'a', 'b', '!' 4

Primitive Types: Limitations Primitive types Limited set of operations Example: int data type operations: add, subtract, multiply, divide, modulo Can't easily combine related information e.g. MarsRover: two double's to represent your Mars rover's position another two for velocity, etc. e.g. LoggingLease: 2D array to track all the values for trees and bears OR 4 1D arrays 5

Create Your Own Data Types Class Blueprint for a custom data type Object Instance of a class May be multiple objects for a particular class blueprint Objects have a set of things they know ( state ) Color of different body panels, location, fuel remaining Objects have a set of things they can do ( behavior ) Honk horn Turn on lights Drive forward 6

Let's Build a Simple Class Goal: represent a ball in 2D What does a ball need to know? x-coordinate y-coordinate radius What can a ball do? Draw itself Print out its position and radius 0.1, 0.5 r=0.1 0.7, 0.7 r=0.2 7

Setting up the Ball Class Create Ball.java containing Ball class Add instance variables for what a Ball knows public class Ball private double posx = 0.0; private double posy = 0.0; private double radius = 0.0; instance variables: variables declared inside class but outside any method access modifier: private = only methods in this class can see and change these instance variables We almost always declare our instance variables as private. 8

Adding an Instance Method Add instance methods for what a Ball can do public class Ball private double posx = 0.0; private double posy = 0.0; private double radius = 0.0; instance variables: available (in scope) in any instance method of Ball public void draw() StdDraw.filledCircle(posX, posy, radius); public String tostring() return "(" + posx + ", " + posy + ") r = " + radius; 9

Adding an Instance Method Add instance methods for what a Ball can do public class Ball private double posx = 0.0; private double posy = 0.0; private double radius = 0.0; public void draw() StdDraw.filledCircle(posX, posy, radius); tostring() Special method, called whenever object printed with System.out.println public String tostring() return "(" + posx + ", " + posy + ") r = " + radius; instance methods: declared without the static keyword 10

Let's try out our new class! Instantiating objects Like arrays, we must declare and create using new public class BallClient public static void main(string [] args) Ball big = new Ball(); Ball small = new Ball(); big.draw(); small.draw(); "Build me a Ball object, I'm not sending you any input about how to do it." System.out.println("big: " + big); System.out.println("small: " + small); 11

Let's try out our New Class! Instantiating objects Like arrays, we must declare and create using new public class BallClient public static void main(string [] args) Ball big = new Ball(); Ball small = new Ball(); big.draw(); small.draw(); System.out.println("big: " + big); System.out.println("small: " + small); % java BallClient big: (0.0, 0.0) r = 0.0 small: (0.0, 0.0) r = 0.0 12

Hello Constructors Add a constructor method, sets instance vars public class Ball private double posx = 0.0; private double posy = 0.0; private double radius = 0.0; public Ball(double x, double y, double r) posx = x; posy = y; radius = r; constructor: No return type. Method name same as class. These are requirements! public void draw() StdDraw.filledCircle(posX, posy, radius); public String tostring() return "(" + posx + ", " + posy + ") r = " + radius; 13

BallClient Take Two Constructor called when we new objects public class BallClient public static void main(string [] args) Ball big = new Ball(0.7, 0.7, 0.2); Ball small = new Ball(0.1, 0.5, 0.1); big.draw(); small.draw(); System.out.println("big: " + big); System.out.println("small: " + small); % java BallClient big: (0.1, 0.5) r = 0.1 small: (0.7, 0.7) r = 0.2 14

Colored Balls Goal: make each Ball object have a color specified by an red-green-blue (RGB) value Call StdDraw.setPenColor() in draw() Create a new Color object for a given RGB value Color is a class in the Java API Default color for our Ball objects: mauve 15

Ball in Living Color import java.awt.*; public class Ball private double posx = 0.0; private double posy = 0.0; private double radius = 0.0; private Color color = new Color(0.88f, 0.68f, 1.0f); public Ball(double x, double y, double r) posx = x; posy = y; radius = r; public void draw() StdDraw.setPenColor(color); StdDraw.filledCircle(posX, posy, radius);... 16

Allowing Clients to Change Color import java.awt.*; public class Ball private double posx = 0.0; private double posy = 0.0; private double radius = 0.0; private Color color = new Color(0.88f, 0.68f, 1.0f); public Ball(double x, double y, double r) posx = x; posy = y; radius = r; public void setcolor(double r, double g, double b) color = new Color((float) r, (float) g, (float) b);... 17

Client Setting Random Color public class BallClient public static void main(string [] args) Ball big = new Ball(0.7, 0.7, 0.2); Ball small = new Ball(0.1, 0.5, 0.1); big.setcolor(math.random(), Math.random(), Math.random()); small.setcolor(math.random(), Math.random(), Math.random()); big.draw(); small.draw(); System.out.println("big: " + big); System.out.println("small: " + small); 18

Creating Lots of Balls We can have an array of objects Step 1: create an array to hold Ball objects Ball [] balls = new Ball[7]; balls[0] balls[1] balls[2] balls[3] balls[4] balls[5] balls[6] balls 19

The Value null What is in each location of the array? Special value null Default value for reference types (non-primitives) Like an unprogrammed remote control Ball [] balls = new Ball[7]; null null null null null null null balls[0] balls[1] balls[2] balls[3] balls[4] balls[5] balls[6] balls 20

Creating all the Ball Objects Each array location needs a new object Ball [] balls = new Ball[7]; for (int i = 0; i < balls.length; i++) balls[i] = new Ball(Math.random(), Math.random(), Math.random() * 0.2); balls[i].setcolor(math.random(), Math.random(), Math.random()); balls[0] balls[1] balls[2] balls[3] balls[4] balls[5] balls[6] balls 21

Client to Draw Lots of Ball Objects public class BallClientDeluxe public static void main(string[] args) Ball [] balls = new Ball[Integer.parseInt(args[0])]; for (int i = 0; i < balls.length; i++) balls[i] = new Ball(Math.random(), Math.random(), Math.random() * 0.2); balls[i].setcolor(math.random(), Math.random(), Math.random()); balls[i].draw(); % java BallClientDeluxe 100 22

Overlap Detection Goal: draw many Ball objects without overlap When do two balls overlap? (x1, y1) r1 (x2, y2) r2 Euclidean distance between centers: d = (x1 - x2) 2 + (y1 - y2) 2 Balls overlap if: d < (r1 + r2) 23

Implementing Overlap Detection Overlap detection is something a Ball can do We can add a method to Ball class for this! (x1, y1) r1 (x2, y2) r2 Euclidean distance between centers: d = (x1 - x2) 2 + (y1 - y2) 2 Balls overlap if: d < (r1 + r2) public boolean overlap(ball other) double deltax = posx - other.posx; double deltay = posy - other.posy; double d = Math.sqrt(deltaX * deltax + deltay * deltay); if (d < (radius + other.radius)) return true; return false; 24

BallClientSuperDeluxe public class BallClientSuperDeluxe public static void main(string[] args) Ball [] balls = new Ball[Integer.parseInt(args[0])]; for (int i = 0; i < balls.length; i++) boolean overlap = false; do balls[i] = new Ball(Math.random(), Math.random(), Math.random() * 0.2); int j = 0; overlap = false; while ((j < i) && (!overlap)) overlap = balls[i].overlap(balls[j]); j++; while (overlap); balls[i].setcolor(math.random(), Math.random(), Math.random()); balls[i].draw(); 25

26

Recap Creating your own data types Object-oriented programming (OOP) Design classes encapsulating: What objects know ( state ) What objects can do ( behavior ) Prevalent concept in most modern programming languages 27

Summary Primitive types Creating your own data types Classes Objects Instance variables Instance methods Constructors Arrays of objects