Object-Oriented Programming 95-712 MISM/MSIT Carnegie Mellon University Lecture 1: Introduction to OOP.

Slides:



Advertisements
Similar presentations
DATA STRUCTURES Lecture: Interfaces Slides adapted from Prof. Steven Roehrig.
Advertisements

Object Oriented Programming in Java George Mason University Fall 2011
Data: Programming Design and Modularization IS 101Y/CMSC 101 Computational Thinking and Design Thursday, September 26, 2013 Marie desJardins University.
Object-Oriented Programming C
Advanced Programming in Java Peyman Dodangeh Sharif University of Technology Fall 2013 Lecture 1: Introduction to OOP Slides adapted from Steven Roehrig.
Client Side Programming Using Java Applet Outcomes: You will be expected to know: – Java Applets and HTML file; –bytecode and platform independent programs;
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Road Map Introduction to object oriented programming. Classes
1 Programming for Engineers in Python Autumn Lecture 5: Object Oriented Programming.
Classes and Instances. Introduction Classes, Objects, Methods and Instance Variables Declaring a Class with a Method and Instantiating an Object of a.
CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
HST 952 Computing for Biomedical Scientists Lecture 2.
Abstract Data Types and Encapsulation Concepts
COMP 14: Primitive Data and Objects May 24, 2000 Nick Vallidis.
Java CourseWinter 2009/10. Introduction Object oriented, imperative programming language. Developed: Inspired by C++ programming language.
COP4020/CGS5426 Programming languages Syllabus. Instructor Xin Yuan Office: 168 LOV Office hours: T, H 10:00am – 11:30am Class website:
CS190/295 Programming in Python for Life Sciences: Lecture 1 Instructor: Xiaohui Xie University of California, Irvine.
CSE 131 Computer Science 1 Module 1: (basics of Java)
Object Oriented Software Development
Programming Languages and Paradigms Object-Oriented Programming.
Sadegh Aliakbary Sharif University of Technology Fall 2011.
JAVA Introduction ● One of the main JAVA design goal is reducing complexity for programmer – Development time is half or less comparing to equivalent C++
Presented by: Mojtaba Khezrian. Agenda Object Creation Object Storage More on Arrays Parameter Passing For Each VarArgs Spring 2014Sharif University of.
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
CS 106 Introduction to Computer Science I 01 / 25 / 2010 Instructor: Michael Eckmann.
Object Oriented Programming (OOP) Design Lecture 1 : Course Overview Bong-Soo Sohn Assistant Professor School of Computer Science and Engineering Chung-Ang.
IT253: Computer Organization Lecture 4: Instruction Set Architecture Tonga Institute of Higher Education.
Object Oriented Programming (OOP) Design Lecture 1 : Course Overview Bong-Soo Sohn Associate Professor School of Computer Science and Engineering Chung-Ang.
1 Agenda Administration Background Our first C program Working environment Exercise Memory and Variables.
Recap (önemli noktaları yinelemek) from last week Paradigm Kay’s Description Intro to Objects Messages / Interconnections Information Hiding Classes Inheritance.
1 Java Inheritance. 2 Inheritance On the surface, inheritance is a code re-use issue. –we can extend code that is already written in a manageable manner.
Object-Oriented Programming and Problem Solving Dr. Ramzi Saifan.
Chapter 2: Everything is an Object ● C++ has many non object oriented features inherited from C. It is a hybrid language meaning that it support different.
Spring 2008 Mark Fontenot CSE 1341 Principles of Computer Science I Note Set 2.
CS 11 java track: lecture 1 Administrivia need a CS cluster account cgi-bin/sysadmin/account_request.cgi need to know UNIX
Objected Oriented Programming & Design JAVA Shishir Gupta (704) (704)
Salman Marvasti Sharif University of Technology Fall 2014.
2: Everything is an Object You Manipulate Objects Using References Primitives Arrays in Java Scoping You Never Destroy Objects Creating New Data Types:
Netprog: Java Intro1 Crash Course in Java. Netprog: Java Intro2 Why Java? Network Programming in Java is very different than in C/C++ –much more language.
CS 340 DATA STRUCTURES Lecture: Everything is an Object.
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 15: More-Advanced Concepts.
Object Oriented Programming (OOP) Design Lecture 1 : Course Overview Bong-Soo Sohn Associate Professor School of Computer Science and Engineering Chung-Ang.
Everything Is an Object Manipulate objects with references The identifier you manipulate is actually a “reference” to an object. Like a television.
Sadegh Aliakbary Sharif University of Technology Spring 2011.
Lecture.1: Getting Started With Java Jiang (Jen) ZHENG May 9 th, 2005.
C++ Programming Basic Learning Prepared By The Smartpath Information systems
Object Oriented Programming Examples: C++, Java Advantages: 1. reusibility of code 2. ability to adapt (extend) previously written code.
CS 376b Introduction to Computer Vision 01 / 23 / 2008 Instructor: Michael Eckmann.
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Everything is an object (CH-2) Manipulating Objects with References. Manipulating Objects with References. String s; String s = “IS2550” String s = new.
Fall 2002CS 150: Intro. to Computing1 Streams and File I/O (That is, Input/Output) OR How you read data from files and write data to files.
Java Basics Opening Discussion zWhat did we talk about last class? zWhat are the basic constructs in the programming languages you are familiar.
Lecture 10 Concepts of Programming Languages Arne Kutzner Hanyang University / Seoul Korea.
Salman Marvasti Sharif University of Technology Winter 2015.
Object Oriented Software Development 4. C# data types, objects and references.
CIS Intro to JAVA Lecture Notes Set July-05 GUI Programming –TextField Action Listeners, JEditorPane action listeners, HTML in a JEditorPane,
1 Class 1 Lecture Topic Concepts, Definitions and Examples.
Peyman Dodangeh Sharif University of Technology Spring 2014.
Course Info Instructor U.T. Nguyen Office: CSEB Office hours: Tuesday, 14:30-15:30 Thursday, 12:00-12:45 By.
Object-Oriented Programming and Problem Solving Dr. Ramzi Saifan Introduction and basics of Java Slides adapted from Steven Roehrig.
OOP Basics Classes & Methods (c) IDMS/SQL News
Sadegh Aliakbary Sharif University of Technology Fall 2010.
Coming up Implementation vs. Interface The Truth about variables Comparing strings HashMaps.
CS190/295 Programming in Python for Life Sciences: Lecture 1
Chapter 10 Thinking in Objects
Prof. Jason Eisner MWF 3-4pm (sometimes 3-4:15)
Introduction to Data Structure
Java Programming Language
Lecture 10 Concepts of Programming Languages
Presentation transcript:

Object-Oriented Programming MISM/MSIT Carnegie Mellon University Lecture 1: Introduction to OOP

Expected Background “A one-semester college course in programming.” (MISM admissions policy) “A one-semester college course in programming.” (MISM admissions policy) I assume you can write a program in some language, understand variables, control structures, functions/subroutines. I assume you can write a program in some language, understand variables, control structures, functions/subroutines. The Eckel CD has background on C. The Eckel CD has background on C. If in doubt, let’s talk. If in doubt, let’s talk.

Course Outline Week 1: Background, basics of O-O, first Java program, programming environments Week 1: Background, basics of O-O, first Java program, programming environments Week 2: Raw materials: types, variables, operators, program control Week 2: Raw materials: types, variables, operators, program control Week 3: Classes: declarations, constructors, cleanup & garbage collection Week 3: Classes: declarations, constructors, cleanup & garbage collection Week 4: Packages, access specifiers, finals, class loading Week 4: Packages, access specifiers, finals, class loading

Course Outline (cont.) Week 5: Polymorphism, abstract classes, design patterns Week 5: Polymorphism, abstract classes, design patterns Week 6: Interfaces & extends, inner classes, callbacks via inner classes Week 6: Interfaces & extends, inner classes, callbacks via inner classes Week 7: Arrays, container classes, iterators Week 7: Arrays, container classes, iterators Week 8: More on collections, collections of references, choosing between types Week 8: More on collections, collections of references, choosing between types

Course Outline (cont.) Week 9: Exception handling Week 9: Exception handling Week 10: Java I/O Week 10: Java I/O Week 11: Applets, applications, Swing Week 11: Applets, applications, Swing Week 12: JDBC, threads Week 12: JDBC, threads

Administrative Details Professor: Stephen F. Roehrig Professor: Stephen F. Roehrig Office: Hamburg Hall, 2101A Office: Hamburg Hall, 2101A “Business hours”: 10 am to 10 pm “Business hours”: 10 am to 10 pm Course Web sites Course Web sites – – Blackboard points to the real Web site. Blackboard points to the real Web site. Blackboard used for grades, discussion board. Blackboard used for grades, discussion board.

Administrative Details (cont.) 12 weeks 12 weeks Two consecutive 80-minute lectures per week, a break in between the lectures. Two consecutive 80-minute lectures per week, a break in between the lectures. Course notes in PowerPoint or HTML, attached to the syllabus. Course notes in PowerPoint or HTML, attached to the syllabus. Course notes available (usually) Sunday before class. Course notes available (usually) Sunday before class. Send course questions to Blackboard, personal questions to me. Send course questions to Blackboard, personal questions to me.

Administrative Details (cont.) Everything is attached to the syllabus. Don’t look for assignments, etc. on Blackboard. Look at the syllabus! Everything is attached to the syllabus. Don’t look for assignments, etc. on Blackboard. Look at the syllabus! Homework usually weekly. Homework usually weekly. Submission instructions with each assignment, usually printed listings and a diskette. Submission instructions with each assignment, usually printed listings and a diskette. Printing slides? Three to a page, at least. Save a tree! Printing slides? Three to a page, at least. Save a tree!

Administrative Details (cont.) Text: Bruce Eckel, “Thinking in Java,” 2nd edition, Prentice Hall. Text: Bruce Eckel, “Thinking in Java,” 2nd edition, Prentice Hall. Teaching assistants are Teaching assistants are –Abhi Anantharaman –Smit Gupta –Gautam Sampath Kumar –Jun Lu –Poornima Makashir Office hours TBD Office hours TBD

Administrative Details (cont.) Attendance is not required, but… Attendance is not required, but… …you are responsible for everything said in class. …you are responsible for everything said in class. I encourage you to ask questions in class. I encourage you to ask questions in class. This is America…you are supposed to ask questions. Don’t guess, ask a question! This is America…you are supposed to ask questions. Don’t guess, ask a question!

My Policy on Cheating Cheating means “submitting, without proper attribution, any computer code that is directly traceable to the computer code written by another person.” Cheating means “submitting, without proper attribution, any computer code that is directly traceable to the computer code written by another person.” I give students a failing course grade for any cheating. Expulsion is also possible. I give students a failing course grade for any cheating. Expulsion is also possible. This doesn’t help your job prospects. This doesn’t help your job prospects.

My Policy on Cheating You may discuss homework problems with classmates (although it is not to your advantage to do so). You may discuss homework problems with classmates (although it is not to your advantage to do so). You can use ideas from the literature (with proper citation). You can use ideas from the literature (with proper citation). You can use anything from the textbook/notes. You can use anything from the textbook/notes. The code you submit must be written completely by you. The code you submit must be written completely by you.

Even More On Cheating “In addition to any penalties imposed by the instructor, including failing the course, all cheating and plagiarism infractions will be reported in writing to the Associate Dean for the program, the Associate Dean of Faculty, the Dean of Student Affairs, and the Dean. They will review and determine if expulsion should be recommended. The report will become part of the student’s permanent record.” “In addition to any penalties imposed by the instructor, including failing the course, all cheating and plagiarism infractions will be reported in writing to the Associate Dean for the program, the Associate Dean of Faculty, the Dean of Student Affairs, and the Dean. They will review and determine if expulsion should be recommended. The report will become part of the student’s permanent record.”

Course Etiquette Etiquette is “conduct in polite society” Etiquette is “conduct in polite society” No cell phones No cell phones No random comings and goings No random comings and goings If you are sleepy, go home If you are sleepy, go home If you want to read or surf the Web, please do it elsewhere If you want to read or surf the Web, please do it elsewhere

Programming Language Evolution Machine language Machine language Assembler Assembler “3rd generation” (COBOL, FORTRAN, C) “3rd generation” (COBOL, FORTRAN, C) Specialized (Lisp, Prolog, APL) Specialized (Lisp, Prolog, APL) “4th generation” (SQL, GAMS, spreadsheets, Mathematica) “4th generation” (SQL, GAMS, spreadsheets, Mathematica) “5th generation” (example, anyone?) “5th generation” (example, anyone?)

Why So Many Languages? Bring the language “closer” to the problem. Bring the language “closer” to the problem. But 4GLs are typically focused on specialized domains (e.g., relational databases). But 4GLs are typically focused on specialized domains (e.g., relational databases). We want a language that is general purpose, yet can easily be “tailored” to any domain. We want a language that is general purpose, yet can easily be “tailored” to any domain. An inspiration from an odd place… An inspiration from an odd place…

Simula Designed to simulate job shops, banks, etc. Designed to simulate job shops, banks, etc. To code, you create “classes” (like milling machines) and “instances” (machine #1, etc.). To code, you create “classes” (like milling machines) and “instances” (machine #1, etc.). All milling machines have properties (how much time to make Part #1). All milling machines have properties (how much time to make Part #1). All milling machines have abilities (mill to depth n, move part to position x). All milling machines have abilities (mill to depth n, move part to position x). Job shop operations simulated by “making” the machines, and moving material through them. Job shop operations simulated by “making” the machines, and moving material through them.

What’s Cool Here? Very close to the problem; domain experts can pitch in easily. Very close to the problem; domain experts can pitch in easily. It’s possible to make new types of machines (e.g., drill press). It’s possible to make new types of machines (e.g., drill press). Description of the shop floor is transparent: Description of the shop floor is transparent: millingMachine#1. millPart (part#3, depth 2mm) drillPress#2. idleUntil (Poisson(0.2))

Programming = Simulation? For a stock market application, we might write: For a stock market application, we might write: value = Stock1.determineValue() risk = Stock1.determineRisk() if (Stock1.f(value, risk) > 0.12) then Stock1.sell() So Simula inspired more general-purpose object-oriented languages. So Simula inspired more general-purpose object-oriented languages.

Object-Oriented Languages Smalltalk, C++, Java, etc… Smalltalk, C++, Java, etc… You can make any kind of objects you want You can make any kind of objects you want How different from procedural languages? How different from procedural languages? –No different at all: Every (reasonable) language is “Turing complete” –Very different: Make expression easier, less error-prone

O-O Languages (Alan Kay) Everything is an object. Everything is an object. A program is a bunch of objects telling each other what to do, by sending messages. A program is a bunch of objects telling each other what to do, by sending messages. Each object has its own memory, and is made up of other objects. Each object has its own memory, and is made up of other objects. Every object has a type (class). Every object has a type (class). All objects of the same type can receive the same messages. All objects of the same type can receive the same messages.

Making Java Work It's “easy as pie” to write procedural code in Java. It's “easy as pie” to write procedural code in Java. It takes some discipline (an attitude) to think O-O. It takes some discipline (an attitude) to think O-O. It's worthwhile to do it. It's worthwhile to do it.

Objects An object has an interface, determined by its class. An object has an interface, determined by its class. A class is an abstract data type, or user- defined type. A class is an abstract data type, or user- defined type. Designing a class means defining its interface. Designing a class means defining its interface.

Built-In Types Think of an int … Think of an int … –What is its interface? –How do you “send it messages”? –How do you make one? –Where does it go when you’re done with it? In solving a computational problem, the goal is to In solving a computational problem, the goal is to –Dream up useful classes, and –Endow them with appropriate characteristics.

Example Suppose I’ve defined this class in Java: Suppose I’ve defined this class in Java: To make one, I type To make one, I type BottleOfBeer myBeer = new BottleOfBeer;

But Why Not Just… This is legal, but just makes a “reference variable” named myBeer This is legal, but just makes a “reference variable” named myBeer This variable can refer to any BottleOfBeer object, but currently refers to nothing This variable can refer to any BottleOfBeer object, but currently refers to nothing The operator new actually causes an object to be created, so we tell it what kind we want The operator new actually causes an object to be created, so we tell it what kind we want BottleOfBeer myBeer;

Example (cont.) If I want many beers, I might say If I want many beers, I might say BottleOfBeer[ ] ninetyNineBottlesOfBeer; But this only declares a reference to an (empty) array. To actually create the bottles, I need to say But this only declares a reference to an (empty) array. To actually create the bottles, I need to say ninetyNineBottlesOfBeer = new BottleOfBeer[99]; // and a for loop to create the 99 bottles… If I want myBeer opened, I say If I want myBeer opened, I saymyBeer.open();

Designers Design, Users Use The interface is the critical part, but the details (implementation) are important too. The interface is the critical part, but the details (implementation) are important too. Users use the interface (the “public part”); the implementation is hidden by “access control”. Users use the interface (the “public part”); the implementation is hidden by “access control”.

Objects vs. Procedural Libraries C libraries are like this, sort of: C libraries are like this, sort of: –The library designer invents a useful struct. –Then she provides some useful functions for it. –The user creates an instance of the struct, then applies library functions to it. One big difference is that anyone can change any part of the struct. Booo, hsss! One big difference is that anyone can change any part of the struct. Booo, hsss! Another difference is in initialization. Another difference is in initialization.

Two Ways of Reusing Classes Composition: One class has another as a part (indicated by the diamond “aggregation” symbol). Composition: One class has another as a part (indicated by the diamond “aggregation” symbol).

Two Ways of Reusing Classes Inheritance: One class is a specialized version of another (indicated by the triangle “inheritance” symbol). Inheritance: One class is a specialized version of another (indicated by the triangle “inheritance” symbol).

Polymorphism Different subclasses respond to the same message, possibly with different actions. Different subclasses respond to the same message, possibly with different actions.

Some Java Code Patron p1 = new Patron(); Patron p2 = new YankPatron(); Patron p3 = new BritPatron(); Patron p4 = new GermanPatron(); p1.BeerPlease() // polite request p2. BeerPlease() // rude request p3.BeerPlease() // polite request p4.BeerPlease() // request in German (but polite) This is a bit of a trick: it requires late binding of the function call. This is a bit of a trick: it requires late binding of the function call.

Creating Objects We usually assume this is free; with built-in types like int or char, we just say We usually assume this is free; with built-in types like int or char, we just say int i; char c; With user-defined types (the ones we make), we need to be explicit about what we want: With user-defined types (the ones we make), we need to be explicit about what we want: – constructor function This is a very important issue! This is a very important issue!

Destroying Objects If an object goes “out of scope,” it can no longer be used (its name is no longer known). If an object goes “out of scope,” it can no longer be used (its name is no longer known). In C++, we might need to write an explicit function to free memory allocated to an object. In C++, we might need to write an explicit function to free memory allocated to an object. Java uses references and “garbage collection”. Java uses references and “garbage collection”.

Example of Object Scope What happens to lect ? What happens to lect ? The LectureNotes object still exists, but the reference lect disappears (it’s out of scope after return). The LectureNotes object still exists, but the reference lect disappears (it’s out of scope after return). Eventually, the garbage collector removes the actual object. Eventually, the garbage collector removes the actual object. public String getTitle(int lectureNumber) { LectureNotes lect; lect = syllabus.getLecture(lectureNumber); String s = lect.getLine(1); return s; }

A Simple Model of Memory The reference variable lect holds a memory location 0x123422C++ Versus Java\n… The LectureNotes object is at that location When you “speak of” the variable lect, you are “referring to” the actual LectureNotes object. When lect goes out of scope it is automatically destroyed. The LectureNotes object lives on, but nobody can use it… memory

Java’s Use of Memory Registers Registers Stack Stack Heap Heap Static variables Static variables Constants Constants Non-RAM storage Non-RAM storage

Java’s Primitive Types TypeSize Wrapper type boolean-Boolean char16-bitCharacter byte8-bitByte short16-bitShort int32-bitInteger long64-bitLong float32-bitFloat double64-bitDouble void-Void

Wrapper Types Variables of primitive types are “automatic”, i.e., they are stored on the stack. Variables of primitive types are “automatic”, i.e., they are stored on the stack. They are automatically deleted when they go out of scope. They are automatically deleted when they go out of scope. What if you want an object holding a primitive type? Example: What if you want an object holding a primitive type? Example: char c = ‘x’; Character C = new Character(‘x’);

Really Big Numbers BigInteger, BigDecimal BigInteger, BigDecimal These are arbitrary precision, as big as they need to be. These are arbitrary precision, as big as they need to be. You can’t use the usual operators (+-*/) since they are objects. But there are methods (functions) to do these things. You can’t use the usual operators (+-*/) since they are objects. But there are methods (functions) to do these things. How might these be implemented? How might these be implemented?

Creating New Types class MyNewType { // definition here // definition here} Now it’s legal to say Now it’s legal to say MyNewType m = new MyNewType();

Class Members Fields (a.k.a. member variables, data members) Fields (a.k.a. member variables, data members) Methods (a.k.a. member functions) Methods (a.k.a. member functions) class MyClass { int a; YourClass b; float memberFunction(int x, float f) { return 0; }

Let’s Write Something // Our first program. File: helloDate.java import java.util.*; public class HelloDate { public static void main(String[] args) { public static void main(String[] args) { System.out.println(“Hello, it is ”); System.out.println(“Hello, it is ”); System.out.println(new Date()); System.out.println(new Date()); }}

The Major Issues Editing Editing –Use any text editor you like (not a word processor!); save as helloDate.java Compiling Compiling –From a DOS or UNIX command line, type > javac helloDate.java –This should produce the file helloDate.class Running Running –Again from the command prompt, type > java helloDate

The Together® Environment For us: For us: –An editor that knows Java syntax and Java library classes. –An easy way to organize.java and.class files. –An easy way to run the compiler. –An easy way to find where the compiler thinks you’ve goofed. –An easy way to run the debugger and other tools.

More on Together It is built for “Model-Build-Deploy”. It is built for “Model-Build-Deploy”. It creates UML and code simultaneously (umm…“together”). It creates UML and code simultaneously (umm…“together”). We won’t worry about UML in this course. We won’t worry about UML in this course. We’ll use Together again in Object- Oriented Analysis and Design, when we do worry about UML. We’ll use Together again in Object- Oriented Analysis and Design, when we do worry about UML.

Together Demonstration Editor Editor Explain Run Configurations Explain Run Configurations Running and seeing output from System.out Running and seeing output from System.out Debugging, setting breakpoints and watches Debugging, setting breakpoints and watches

Another Simple Program import java.util.*; public class DoubleSpace { public static void main(String[] args) { SimpleInput keyboard = new SimpleInput(); System.out.println("Enter the name of a file to doublespace: "); String fName = new String(keyboard.nextLine()); SimpleInput file = new SimpleInput(fName); String lineFromFile = new String(); lineFromFile = file.nextLine(); while(lineFromFile != null) { System.out.println(lineFromFile); System.out.println(); lineFromFile = file.nextLine(); } System.out.println("We're done."); }

Notes on DoubleSpace We use the class SimpleInput. See the file SimpleInput.html that is attached to the syllabus. We use the class SimpleInput. See the file SimpleInput.html that is attached to the syllabus. DoubleSpace just adds a blank line after every line in the file. DoubleSpace just adds a blank line after every line in the file.