Object-Oriented-Programming! (OOP)
|
|
- Stephen Melton
- 5 years ago
- Views:
Transcription
1 Object-Oriented-Programming! (OOP)
2 Basically it s all about abstraction & information hiding n Good programs consist of layer upon layer of reusable code (think of software tools). n The programmer should be free to tinker with the internal workings of a set of software tools, but with little risk of breaking programs that use the tools. n This is accomplished by introducing layers of abstraction. Good programmers have been doing this since the beginning of programming. There are many ways of doing this. n In object oriented programming, bundled sets of data and code are initialized and then passed around and used within the program. Data within objects is never accessed directly. It is only accessed via code in the objects.
3 Review of subroutine basics n Calling a subroutine (...output_list...) = foo(...input_list...) n Declaring a subroutine sub foo { (...input_list...) Perl statements... return (...output_list...) } n Not restricted to returning lists, can return hashes or other objects
4 Review of reference basics n References point to stuff in memory $anonarray = [...list of values...]; $anonhash = {...list of key/value pairs...}; $anonsubroutine = sub {...Perl statements..}; n Recover stuff with dereference operator ( -> ) value = $anonarray->[index] value = $anonhash->{key} (...output_list...) = $anonsubroutine->(...input_list...)
5 demo #1 #!/usr/bin/perl use warnings; use strict; my $anonarray = [1,2,3,4,"five"]; my $anonhash = { "pi" => , "e" => , "c" => }; my $anonfunc = sub { print "hello world\n"; }; print $anonarray->[4],"\n"; print $anonhash->{"pi"},"\n"; $anonfunc->(); demo: references3.pl
6 #!/usr/bin/perl use warnings; use strict; demo #2 An anonymous hash containing anonymous functions my $anonhash = { hello => sub { print "hello world\n"}, bye => sub { print "goodbye cold cruel world\n"} whatever => sub { print $_[0]\n"} }; $anonhash->{hello}(); $anonhash->{bye}(); $anonhash->{whatever}( any text ); demo: references4.pl
7 back to OOP n Many useful library modules (e.g. bioperl) are written using an object-oriented programming style n Using Objected oriented modules is easy n Writing Object oriented moduels is a little harder than using them,! but easier than writing traditional modules n Key concepts: n information hiding n data is hidden from the calling routines n Encapsulation n Data and functions encapsulated into one object. Data manipulated by functions not directoy. n Abstraction n Hierarchies of subroutines & functions, each hides the details of it s data and implementation from calling routines
8 Perl Objects n Perl extends the capabilities of packages and modules to automatically build objects for you and to hide some of the messy details. n OOP terminology (translated into perl) n Object -- a hash reference whose values are! references to data and subroutines n Method -- A subroutine incorporated in an object n Class -- a package that declares objects and references
9 n n bless() distinguishes an ordinary hash from an object Perl needs to know which hash references are objects so that it knows to treat them a little bit differently. Bless() attaches a tag to a hash reference n Existence of a tag tells perl to treat a hash reference as an object n The tag is just a string which is the name of the package where the reference (the referent) was declared package demopackage; my %somehash; my $s = \%somehash; print hash references is: $s\n"; bless($s); print blessed reference is: $s\n"; demo: bless1.pl
10 What does bless() really do to a hash reference? n Marks the hash with a tag that is the package name where the bless is applied n Automatically adds hash entries corresponding to globals in the package: n A key for each global perl identifier n The value is a reference to the corresponding data or functions
11 creating an object with new() & bless() my $s = demopackage::new(); # create an object print $s\n ; # print the reference $s->test("foo", "goo"); # invoke a method # the package starts here package demopackage; sub new { return bless {}} # bless on an empty hash # print each element of the argument list sub test { foreach (@_) { print "$_\n"; } } demo: bless2.pl
12 Huh! Why is there an extra element n Recall that: n A method, is just a subroutine that is invoked by dereferencing a function reference, in a blessed hash. n A class, is just a package. n An object, is just a blessed hash. n When invoking a method in an object, Perl automatically adds a reference-to-the-object itself, to the beginning This is so that the method can access the other data and functions in the class, if it needs to.
13 Example: accessing private variables my $s = demopackage::new(); $s->set( ); $s->print_parm(); # the package starts here package demopackage; our $parm; sub new { return bless {} } sub set { my $self = shift; # shift first argument $self->parm = shift; # shift second argument } sub print_parm { my $self = shift; print $self->parm,"\n"; } demo: bless4.pl
14 Writing object oriented modules A practical example illustrated by a sequence of examples
15 Working example: queues A queue consists of two things: 1) A list whose items are retrieved in First in, first out (FIFO) order. 2) A description of the queue, e.g. ten items or less. Dequeue (leavequeue) Enqueue (enterqueue) Harry David Fernando Rosie How do we represent a queue? 1) The list part of the queue is represented as an array variable 2) The description of the queue is represented as string variable
16 #!/usr/bin/perl use warnings; use strict; Queue version 1 # a queue is an array with a description my $description = '10 items or less'; # add customers to a queue unshift(@queue, 'Harry'); unshift(@queue, 'David'); unshift(@queue, 'Fernando'); unshift(@queue, 'Rosie'); # checkout the customers print "line: $description\n"; while(my $who = { print "checked out $who\n"; }
17 Discussion Problems? 1) How to handle multiple queues? Replicate the variables and replicate the code for manipulating them -- yuk! 2) The code is not reusable 3) The code will be difficult to maintain. For example, when I come back in a month to modify it, I will have to understand the implementation in order to understand what it is doing, e.g. why did I unshift and pop? Solve many of the problems by implementing queues as a set of subroutines.
18 Queue version 2 #!/usr/bin/perl use warnings; use strict; my $aisle1 = newqueue('10 items or less ); joinqueue($aisle1, 'Harry'); joinqueue($aisle1, 'David'); joinqueue($aisle1, 'Fernando'); joinqueue($aisle1, 'Rosie'); print "The queue is: ". description($aisle1). "\n"; while(my $who = leavequeue($aisle1) ) { print "checked out $who\n"; } subroutines allow us to abstract away details of the implementation.
19 sub newqueue { return { } } subroutines for Queue 'DESCRIPTION' => $_[0], 'QUEUE' => [] sub description { return $_[0]->{'DESCRIPTION'}; } sub joinqueue { unshift(@{$_[0]->{'queue'}},$_[1]); } sub leavequeue { return }
20 Perl Objects (reminder) n We will make our subroutines resusable by putting them in a module n OOP terminology (translated into perl) n Object -- a variable containing a blessed hash reference! which in turn contains data and subroutine! references n Method -- A subroutine incorporated in an object n Class -- a package that declares objects and references n Syntax: Instead of joinqueue($ailse1, 'Fernando'); We will write $aisle1->joinqueue('fernando');
21 Queue version 3 #!/usr/bin/perl use warnings; use strict; use Queue; package name method my $ailse1 = Queue::new('10 items or less'); $ailse1 ->joinqueue('harry'); $ailse1 ->joinqueue('david'); $ailse1 ->joinqueue('fernando'); $ailse1 ->joinqueue('rosie'); print " queue : ".$ailse1 ->description."\n"; while(my $who = $ailse1 ->leavequeue) { print "checked out $who\n"; }
22 Queue.pm package Queue; # package is always the first statement sub new { return bless { 'DESCRIPTION' => $_[0], 'QUEUE' => [] } } sub description { return $_[0]->{'DESCRIPTION'}; } sub joinqueue { unshift(@{$_[0]->{'queue'}},$_[1]); } sub leavequeue { return } 1; # 1 is always the last statement Essentially the same routines as before, but in in object oriented style and in a file Queue.pm.
23 1. use Queue; Summary 2. my $queue = Queue::new('10 items or less'); 3. $queue->description(); 1. use gives the script access to the objects in the Queue class. 2. The identifier on the LHS of -> is a package name (a class), so perl knows that new is a subroutine in Queue.pm which returns: 1. A hash with references to the subroutines and globals in Queue.pm 2. A tag with the package name, i.e. a blessed hash 3. Because the hash reference $queue was blessed, perl knows that all identifiers on the RHS of $queue-> are found in Queue.pm. 4. The parameter list of description has the class name (Queue) automatically shifted onto it, so the method can access other methods and data in the class.
24 Inheritance n Objects, can inherit methods and data from other objects. AbstractQueue is a is a is a DisneyQueue WalmartQueue JHSPHQueue n Methods and variables in parent object are incorporated into child objects
25 Queue version 4 #!/usr/bin/perl use warnings; use strict; use DisneyQueue; my $ride1 = DisneyQueue::new( Mr. Toad s wild ride ); $ride1 ->joinqueue('harry'); $ride1 -> joinqueue('david'); $ride1 -> joinqueue('fernando'); $ride1 -> joinqueue('rosie'); print $ride1 ->queuelength," waiting in the "; print $ride1 ->description," queue\n"; while(my $who = $ride1 ->dequeue) { print "$who checked out\n"; }
26 DisneyQueue.pm package DisneyQueue; require = qw/abstractqueue/; # Is a use warnings; use strict; sub queuelength { } return $_[0]->{'QUEUE'} }; 1;
27 AbstractQueue.pm Same as queue.pm, but with a more sophisticated new method new can be inherited to make AbstractQueue, DisneyQueue, etc. sub new { my $invocant = shift; # either the package name, or the reference } my $classname = $invocant ref($invocant); return bless ( {'DESCRIPTION' => $_[0],'QUEUE'=> [] }, $classname ); sub description { return $_[0]->{'DESCRIPTION'}; } sub enqueue { unshift(@{$_[0]->{'queue'}},$_[1]); } sub dequeue { return } The behind the scenes trick is that the tag is copied from the! invocant to the new object (see Programming Perl ).
28 Moose is an extension of the Perl 5 object system. The main goal of Moose is to make Perl 5 Object Oriented programming easier, more consistent and less tedious. With Moose you can think more about what you want to do and less about the mechanics of OOP.
29 Moose takes care of all the messy housekeeping for you A module package MyClass1; use Moose; sub dosomething { print "hello world\n" } 1; The main #!/usr/bin/perl -w use MyClass1; my $object = MyClass1->new(); # returns an object, i.e. a blessed Hash $object->dosomething(); # invokes the 'dosomething' method
30 What you get automagically n new() n attributes, getters and accessors n type checking (for attributes) n subclassing
PERL Scripting - Course Contents
PERL Scripting - Course Contents Day - 1 Introduction to PERL Comments Reading from Standard Input Writing to Standard Output Scalar Variables Numbers and Strings Use of Single Quotes and Double Quotes
More informationObject Oriented Programming and Perl
Object Oriented Programming and Perl Prog for Biol 2011 Simon Prochnik 1 Why do we teach you about objects and object-oriented programming (OOP)? Objects and OOP allow you to use other people s code to
More informationCOMS 3101 Programming Languages: Perl. Lecture 5
COMS 3101 Programming Languages: Perl Lecture 5 Fall 2013 Instructor: Ilia Vovsha http://www.cs.columbia.edu/~vovsha/coms3101/perl Lecture Outline Packages & Modules Concepts: Subroutine references Symbolic
More informationCOMS 3101 Programming Languages: Perl. Lecture 6
COMS 3101 Programming Languages: Perl Lecture 6 Fall 2013 Instructor: Ilia Vovsha http://www.cs.columbia.edu/~vovsha/coms3101/perl Lecture Outline Concepts: Subroutine references Symbolic references Saving
More informationIT441. Network Services Administration. Data Structures: Arrays
IT441 Network Services Administration Data Structures: Arrays Data Types Remember there are three basic data types in Perl o Numeric o String o Boolean (Logical) I differentiate between data types and
More information# Blocking dequeue with 5-second timeout if (defined(my $item = $q->dequeue_timed(5))) { # Work on $item }
NAME VERSION SYNOPSIS Thread::Queue - Thread-safe queues This document describes Thread::Queue version 3.12 use strict; use warnings; use threads; use Thread::Queue; my $q = Thread::Queue->new(); # A new
More informationPerl Scripting. Students Will Learn. Course Description. Duration: 4 Days. Price: $2295
Perl Scripting Duration: 4 Days Price: $2295 Discounts: We offer multiple discount options. Click here for more info. Delivery Options: Attend face-to-face in the classroom, remote-live or on-demand streaming.
More informationIT441. Subroutines. (a.k.a., Functions, Methods, etc.) DRAFT. Network Services Administration
IT441 Network Services Administration Subroutines DRAFT (a.k.a., Functions, Methods, etc.) Organizing Code We have recently discussed the topic of organizing data (i.e., arrays and hashes) in order to
More informationData Abstraction. Hwansoo Han
Data Abstraction Hwansoo Han Data Abstraction Data abstraction s roots can be found in Simula67 An abstract data type (ADT) is defined In terms of the operations that it supports (i.e., that can be performed
More informationSoftware Development. Modular Design and Algorithm Analysis
Software Development Modular Design and Algorithm Analysis Data Encapsulation Encapsulation is the packing of data and functions into a single component. The features of encapsulation are supported using
More informationCS 105 Perl: Modules and Objects
CS 105 Perl: Modules and Objects February 20, 2013 Agenda Today s lecture is an introduction to Perl modules and objects, but first we will cover a handy feature Perl has for making data structures. Where
More informationChapter 5 Object-Oriented Programming
Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares
More informationModularity and Reusability I. Functions and code reuse
Modularity and Reusability I Functions and code reuse Copyright 2006 2009 Stewart Weiss On being efficient When you realize that a piece of Perl code that you wrote may be useful in future programs, you
More informationClassnote for COMS6100
Classnote for COMS6100 Yiting Wang 3 November, 2016 Today we learn about subroutines, references, anonymous and file I/O in Perl. 1 Subroutines in Perl First of all, we review the subroutines that we had
More informationC++ & Object Oriented Programming Concepts The procedural programming is the standard approach used in many traditional computer languages such as BASIC, C, FORTRAN and PASCAL. The procedural programming
More informationSoftware Design and Analysis for Engineers
Software Design and Analysis for Engineers by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc251 Simon Fraser University Slide Set: 2 Date:
More informationpackage YourModule; require = = qw(munge frobnicate); # symbols to export on request
NAME SYNOPSIS Exporter - Implements default import method for modules In module YourModule.pm: require Exporter; @EXPORT_OK = qw(munge frobnicate); # symbols to export on request or use Exporter 'import';
More informationIN CHAPTER 7, SUBROUTINES AND MODULES, you learned how to organize
8 Object-Oriented Programming IN CHAPTER 7, SUBROUTINES AND MODULES, you learned how to organize your code into subroutines, packages, and modules. In this chapter, you ll find out how to create objects
More informationWhat are the characteristics of Object Oriented programming language?
What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is
More informationLearning Perl Objects, References, and Modules
Learning Perl Objects, References, and Modules Randal L. Schwartz with Tom Phoenix HLuHB Darmstadt Illlllllllllllllllllllll 15760214 O'REILLY* Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo
More informationHands-On Perl Scripting and CGI Programming
Hands-On Course Description This hands on Perl programming course provides a thorough introduction to the Perl programming language, teaching attendees how to develop and maintain portable scripts useful
More informationPerl, Object Orientation
Perl, Object Orientation (and a little Graph Theory) Nick Stylianou nickstylianou@yahoo.co.uk 1 Outline Preliminaries (History, Resources) 1) The Perl Language 2) Object-Orientation (OO) in Perl 3) Example
More informationCS 105 Perl: Completing the Toolbox
CS 105 Perl: Completing the Toolbox March 4, 2013 Agenda autodie with open Inspecting scalars perl -c Unary coercion Topicalization ~~ Unique list idiom Schwartzian Transform Using // for defaults and
More information1. Introduction. 2. Scalar Data
1. Introduction What Does Perl Stand For? Why Did Larry Create Perl? Why Didn t Larry Just Use Some Other Language? Is Perl Easy or Hard? How Did Perl Get to Be So Popular? What s Happening with Perl Now?
More informationThis document was created in February, 2011, and the last major revision was in February, 2013.
NAME DATE perlootut - Object-Oriented Programming in Perl Tutorial Perl version 5.26.1 documentation - perlootut This document was created in February, 2011, and the last major revision was in February,
More informationuse attributes (); # optional, to get subroutine declarations = attributes::get(\&foo);
NAME SYNOPSIS attributes - get/set subroutine or variable attributes sub foo : method ; my ($x,@y,%z) : Bent = 1; my $s = sub : method {... ; use attributes (); # optional, to get subroutine declarations
More information@EXPORT_OK = qw(munge frobnicate); # symbols to export on request
NAME Exporter - Implements default import method for modules SYNOPSIS In module YourModule.pm: package YourModule; require Exporter; @ISA = qw(exporter); @EXPORT_OK = qw(munge frobnicate); # symbols to
More informationWhat is Inheritance?
Inheritance 1 Agenda What is and Why Inheritance? How to derive a sub-class? Object class Constructor calling chain super keyword Overriding methods (most important) Hiding methods Hiding fields Type casting
More informationDefining Classes and Methods
Defining Classes and Methods Chapter 5 Modified by James O Reilly Class and Method Definitions OOP- Object Oriented Programming Big Ideas: Group data and related functions (methods) into Objects (Encapsulation)
More informationRecursion is a fundamental programming technique that can provide an elegant solution certain kinds of problems. COMP Week 8 & 9 1
Recursion is a fundamental programming technique that can provide an elegant solution certain kinds of problems COMP 202 - Week 8 & 9 1 A recursive definition is one which uses the word or concept being
More informationAdvanced Perl. Boston University Information Services & Technology. Course Coordinator: Timothy Kohl. Outline. more on functions
Advanced Perl Boston University Information Services & Technology Course Coordinator: Timothy Kohl Last Modified: 05/12/15 Outline more on functions references and anonymous variables local vs. global
More informationJAVA: A Primer. By: Amrita Rajagopal
JAVA: A Primer By: Amrita Rajagopal 1 Some facts about JAVA JAVA is an Object Oriented Programming language (OOP) Everything in Java is an object application-- a Java program that executes independently
More informationCS 105 Perl: Perl subroutines and Disciplined Perl
CS 105 Perl: Perl subroutines and Disciplined Perl Nathan Clement! February 3, 2014 Agenda We will cover Perl scoping, subroutines (user- defined functions) and then we continue on to Perl s features for
More informationUsing the Actor Framework in LabVIEW
Using the Actor Framework in LabVIEW By Allen C. Smith and Stephen R. Mercer The Actor Framework is a software library that supports the writing of applications in which multiple VIs run independently
More informationChapter 9 :: Data Abstraction and Object Orientation
Chapter 9 :: Data Abstraction and Object Orientation Programming Language Pragmatics Michael L. Scott Control or PROCESS abstraction is a very old idea (subroutines!), though few languages provide it in
More information1. Write two major differences between Object-oriented programming and procedural programming?
1. Write two major differences between Object-oriented programming and procedural programming? A procedural program is written as a list of instructions, telling the computer, step-by-step, what to do:
More informationProgramming Exercise 14: Inheritance and Polymorphism
Programming Exercise 14: Inheritance and Polymorphism Purpose: Gain experience in extending a base class and overriding some of its methods. Background readings from textbook: Liang, Sections 11.1-11.5.
More informationObject Oriented Programming with Perl
Object Oriented Programming with Perl Yet Another Perl Conference Amsterdam, August 2 4, 2001 2001 Squirrel Consultancy. All rights reserved. Object Oriented Programming with Perl Preface 2001 Squirrel
More informationDay 6. COMP1006/1406 Summer M. Jason Hinek Carleton University
Day 6 COMP1006/1406 Summer 2016 M. Jason Hinek Carleton University today s agenda assignments Assignment 3 is due on Monday a quick look back abstract classes and interfaces casting objects abstract data
More informationChapter 1: Object-Oriented Programming Using C++
Chapter 1: Object-Oriented Programming Using C++ Objectives Looking ahead in this chapter, we ll consider: Abstract Data Types Encapsulation Inheritance Pointers Polymorphism Data Structures and Algorithms
More informationNode.js Training JavaScript. Richard richardrodger.com
Node.js Training JavaScript Richard Rodger @rjrodger richardrodger.com richard.rodger@nearform.com A New Look at JavaScript Embracing JavaScript JavaScript Data Structures JavaScript Functions Functional
More informationChapter 12 Object-Oriented Programming. Starting Out with Games & Graphics in C++ Tony Gaddis
Chapter 12 Object-Oriented Programming Starting Out with Games & Graphics in C++ Tony Gaddis Addison Wesley is an imprint of 2010 Pearson Addison-Wesley. All rights reserved. 12.1 Procedural and Object-Oriented
More informationData Structures (list, dictionary, tuples, sets, strings)
Data Structures (list, dictionary, tuples, sets, strings) Lists are enclosed in brackets: l = [1, 2, "a"] (access by index, is mutable sequence) Tuples are enclosed in parentheses: t = (1, 2, "a") (access
More informationCP150 - Advanced Perl Programming
Corder Enterprises International Building World Class MIS Teams, for you! CP150 - Advanced Perl Programming Course Description: Perl has evolved from its beginnings as an eclectic scripting tool for UNIX
More informationDot and Scope Resolution Operator
Dot and Scope Resolution Operator Used to specify "of what thing" they are members Dot operator: Specifies member of particular object Scope resolution operator: Specifies what class the function definition
More informationLecturer: William W.Y. Hsu. Programming Languages
Lecturer: William W.Y. Hsu Programming Languages Chapter 9 Data Abstraction and Object Orientation 3 Object-Oriented Programming Control or PROCESS abstraction is a very old idea (subroutines!), though
More informationSEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7
SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7 Hi everyone once again welcome to this lecture we are actually the course is Linux programming and scripting we have been talking about the Perl, Perl
More informationPROGRAMMING III OOP. JAVA LANGUAGE COURSE
COURSE 3 PROGRAMMING III OOP. JAVA LANGUAGE PREVIOUS COURSE CONTENT Classes Objects Object class Acess control specifier fields methods classes COUSE CONTENT Inheritance Abstract classes Interfaces instanceof
More informationObjects and Classes. 1 Creating Classes and Objects. CSCI-UA 101 Objects and Classes
Based on Introduction to Java Programming, Y. Daniel Liang, Brief Version, 10/E 1 Creating Classes and Objects Classes give us a way of defining custom data types and associating data with operations on
More informationLecture 10 Notes Linked Lists
Lecture 10 Notes Linked Lists 15-122: Principles of Imperative Computation (Summer 1 2015) Frank Pfenning, Rob Simmons, André Platzer 1 Introduction In this lecture we discuss the use of linked lists to
More informationCS 32. Lecture 2: objects good?
CS 32 Lecture 2: objects good? Double Vision This course has two main tracks Unix/shell stuff Object-Oriented Programming Basic C++ familiarity Off by one! Another Troika This class has three main texts
More informationThe Perl Debugger. Avoiding Bugs with Warnings and Strict. Daniel Allen. Abstract
1 of 8 6/18/2006 7:36 PM The Perl Debugger Daniel Allen Abstract Sticking in extra print statements is one way to debug your Perl code, but a full-featured debugger can give you more information. Debugging
More informationLecture 2: Programming in Perl: Introduction 1
Lecture 2: Programming in Perl: Introduction 1 Torgeir R. Hvidsten Professor Norwegian University of Life Sciences Guest lecturer Umeå Plant Science Centre Computational Life Science Cluster (CLiC) 1 This
More informationIntroduction to OOP. Procedural Programming sequence of statements to solve a problem.
Introduction to OOP C++ - hybrid language improved and extended standard C (procedural language) by adding constructs and syntax for use as an object oriented language. Object-Oriented and Procedural Programming
More informationOOPS Viva Questions. Object is termed as an instance of a class, and it has its own state, behavior and identity.
OOPS Viva Questions 1. What is OOPS? OOPS is abbreviated as Object Oriented Programming system in which programs are considered as a collection of objects. Each object is nothing but an instance of a class.
More informationMultiple choice questions. Answer on Scantron Form. 4 points each (100 points) Which is NOT a reasonable conclusion to this sentence:
Multiple choice questions Answer on Scantron Form 4 points each (100 points) 1. Which is NOT a reasonable conclusion to this sentence: Multiple constructors for a class... A. are distinguished by the number
More informationModule 2: Priority Queues
Module 2: Priority Queues CS 240 Data Structures and Data Management T. Biedl K. Lanctot M. Sepehri S. Wild Based on lecture notes by many previous cs240 instructors David R. Cheriton School of Computer
More informationLecture 10 Notes Linked Lists
Lecture 10 Notes Linked Lists 15-122: Principles of Imperative Computation (Spring 2016) Frank Pfenning, Rob Simmons, André Platzer 1 Introduction In this lecture we discuss the use of linked lists to
More informationObjective-C: An Introduction (pt 1) Tennessee Valley Apple Developers Saturday CodeJam July 24, 2010 August 7, 2010
Objective-C: An Introduction (pt 1) Tennessee Valley Apple Developers Saturday CodeJam July 24, 2010 August 7, 2010 What is Objective-C? Objective-C is an object-oriented programming language that adds
More informationCompositional C++ Page 1 of 17
Compositional C++ Page 1 of 17 Compositional C++ is a small set of extensions to C++ for parallel programming. OVERVIEW OF C++ With a few exceptions, C++ is a pure extension of ANSI C. Its features: Strong
More informationPerl Basics. Structure, Style, and Documentation
Perl Basics Structure, Style, and Documentation Copyright 2006 2009 Stewart Weiss Easy to read programs Your job as a programmer is to create programs that are: easy to read easy to understand, easy to
More informationModule 2: Priority Queues
Module 2: Priority Queues CS 240 Data Structures and Data Management T. Biedl K. Lanctot M. Sepehri S. Wild Based on lecture notes by many previous cs240 instructors David R. Cheriton School of Computer
More informationGrand Central Dispatch. Sri Teja Basava CSCI 5528: Foundations of Software Engineering Spring 10
Grand Central Dispatch Sri Teja Basava CSCI 5528: Foundations of Software Engineering Spring 10 1 New Technologies in Snow Leopard 2 Grand Central Dispatch An Apple technology to optimize application support
More informationSemantic actions for declarations and expressions
Semantic actions for declarations and expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate
More informationLecture 15: Even more pointer stuff Virtual function table
CIS 330: / / / / (_) / / / / _/_/ / / / / / \/ / /_/ / `/ \/ / / / _/_// / / / / /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / / /_/ / / / / / \ /_/ /_/_/_/ _ \,_/_/ /_/\,_/ \ /_/ \ //_/ /_/ Lecture 15:
More informationChapter 10 :: Data Abstraction and Object Orientation
Chapter 10 :: Data Abstraction and Object Orientation Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier Chapter10_Data_Abstraction_and_Object_Orientation_4e 1 Object-Oriented
More informationThe Eobj Perl environment
The Eobj Perl environment Eli Billauer elib@flextronics.co.il http://search.cpan.org/author/billauer/ The Eobj Perl environment p.1 Lecture overview Introduction: Me, Eobj and OO programming Eobj classes
More informationChapter 6 Structures and Classes. GEDB030 Computer Programming for Engineers Fall 2017 Euiseong Seo
Chapter 6 Structures and Classes 1 Learning Objectives Structures Structure types Structures as function arguments Initializing structures Classes Defining, member functions Public and private members
More informationCompaq Interview Questions And Answers
Part A: Q1. What are the difference between java and C++? Java adopts byte code whereas C++ does not C++ supports destructor whereas java does not support. Multiple inheritance possible in C++ but not
More informationSemantic actions for declarations and expressions. Monday, September 28, 15
Semantic actions for declarations and expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate
More informationSubroutines in Perl. Jon-Michael Deldin. Dept. of Computer Science University of Montana September 12, 2011
Subroutines in Perl Jon-Michael Deldin Dept. of Computer Science University of Montana jon-michael.deldin@mso.umt.edu September 12, 2011 Jon-Michael Deldin (UM) Subroutines in Perl September 12, 2011 1
More informationIntroduction to C++ Coding Style How to Program Beautifully?
Introduction to C++ Coding Style How to Program Beautifully? ACM Honoured Class, SJTU Sept. 29, 2013 Contents I Header Files Inline Functions Function Parameter Ordering Names and Order of Includes Scoping
More informationCSE 341, Autumn 2015, Ruby Introduction Summary
CSE 341, Autumn 2015, Ruby Introduction Summary Disclaimer: This lecture summary is not necessarily a complete substitute for atting class, reading the associated code, etc. It is designed to be a useful
More informationIT441. Network Services Administration. Data Structures: Lists
IT441 Network Services Administration Data Structures: Lists Comment Blocks Perl normally treats lines beginning with a # as a comment. Get in the habit of including comments with your code. Put a comment
More informationstep is to see how C++ implements type polymorphism, and this Exploration starts you on that journey.
EXPLORATION 36 Virtual Functions Deriving classes is fun, but there s not a lot you can do with them at least, not yet. The next step is to see how C++ implements type polymorphism, and this Exploration
More informationBuilding Your own Widget with ArcGIS API for JavaScript
Building Your own Widget with ArcGIS API for JavaScript Matt Driscoll @driskull JC Franco @arfncode Agenda About Widgets Prerequisites Widget framework Theming DO IT! Tips & tricks About Widgets What?
More informationObject Oriented Programming is a programming method that combines: Advantage of Object Oriented Programming
Overview of OOP Object Oriented Programming is a programming method that combines: a) Data b) Instructions for processing that data into a self-sufficient object that can be used within a program or in
More informationChapter 10 Pointers and Dynamic Arrays. GEDB030 Computer Programming for Engineers Fall 2017 Euiseong Seo
Chapter 10 Pointers and Dynamic Arrays 1 Learning Objectives Pointers Pointer variables Memory management Dynamic Arrays Creating and using Pointer arithmetic Classes, Pointers, Dynamic Arrays The this
More informationOverview of OOP. Dr. Zhang COSC 1436 Summer, /18/2017
Overview of OOP Dr. Zhang COSC 1436 Summer, 2017 7/18/2017 Review Data Structures (list, dictionary, tuples, sets, strings) Lists are enclosed in square brackets: l = [1, 2, "a"] (access by index, is mutable
More informationEXAM Microsoft MTA Software Development Fundamentals. Buy Full Product.
Microsoft EXAM - 98-361 Microsoft MTA Software Development Fundamentals Buy Full Product http://www.examskey.com/98-361.html Examskey Microsoft 98-361 exam demo product is here for you to test the quality
More informationBCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 5 Diploma in IT OBJECT ORIENTED PROGRAMMING
BCS THE CHARTERED INSTITUTE FOR IT BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 5 Diploma in IT OBJECT ORIENTED PROGRAMMING Wednesady 23 rd March 2016 Afternoon Answer any FOUR questions out of SIX. All
More informationObject-Oriented Software Engineering. Chapter 2: Review of Object Orientation
Object-Oriented Software Engineering Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized around the notion of procedures Procedural abstraction
More informationBasic Object-Oriented Concepts. 5-Oct-17
Basic Object-Oriented Concepts 5-Oct-17 Concept: An object has behaviors In old style programming, you had: data, which was completely passive functions, which could manipulate any data An object contains
More informationTieing and Overloading Objects in Perl. Dave Cross Magnum Solutions
Tieing and Overloading Objects in Perl Dave Cross Magnum Solutions What We Will Cover Why tie or overload? What We Will Cover Why tie or overload? Tieing objects What We Will Cover Why tie or overload?
More informationData Structure. Recitation VII
Data Structure Recitation VII Recursion: Stack trace Queue Topic animation Trace Recursive factorial Executes factorial(4) Step 9: return 24 Step 8: return 6 factorial(4) Step 0: executes factorial(4)
More informationSelf-review Questions
7Class Relationships 106 Chapter 7: Class Relationships Self-review Questions 7.1 How is association between classes implemented? An association between two classes is realized as a link between instance
More informationB16 Object Oriented Programming
B16 Object Oriented Programming Michael A. Osborne mosb@robots.ox.ac.uk http://www.robots.ox.ac.uk/~mosb/teaching.html#b16 Hilary 2013 This course will introduce object-oriented programming (OOP). It will
More informationProgramming overview
Programming overview Basic Java A Java program consists of: One or more classes A class contains one or more methods A method contains program statements Each class in a separate file MyClass defined in
More informationHash::Util::FieldHash offers a number of functions in support of The Inside-out Technique of class construction.
NAME SYNOPSIS Hash::Util::FieldHash - Support for Inside-Out Classes ### Create fieldhashes use Hash::Util qw(fieldhash fieldhashes); # Create a single field hash fieldhash my %foo; # Create three at once...
More informationProgramming in the Large II: Objects and Classes (Part 1)
Programming in the Large II: Objects and Classes (Part 1) 188230 Advanced Computer Programming Asst. Prof. Dr. Kanda Runapongsa Saikaew (krunapon@kku.ac.th) Department of Computer Engineering Khon Kaen
More informationBeginning Perl. Third Edition. Apress. JAMES LEE with SIMON COZENS
Beginning Perl Third Edition JAMES LEE with SIMON COZENS Apress About the Author... About the Technical Reviewers Acknowledgements Suitrod yetion «. xvi xvii xviii «xix. Chapter 1: First Steps in Perl..
More information9/21/2010. Based on Chapter 2 in Advanced Programming Using Visual Basic.NET by Bradley and Millspaugh
Building Multitier Programs with Classes Based on Chapter 2 in Advanced Programming Using Visual Basic.NET by Bradley and Millspaugh The Object-Oriented Oriented (OOP) Development Approach Large production
More informationSoftware Design and Analysis for Engineers
Software Design and Analysis for Engineers by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc251 Simon Fraser University Slide Set: 1 Date:
More informationWeiss Chapter 1 terminology (parenthesized numbers are page numbers)
Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement
More informationCSCI 4152/6509 Natural Language Processing. Perl Tutorial CSCI 4152/6509. CSCI 4152/6509, Perl Tutorial 1
CSCI 4152/6509 Natural Language Processing Perl Tutorial CSCI 4152/6509 Vlado Kešelj CSCI 4152/6509, Perl Tutorial 1 created in 1987 by Larry Wall About Perl interpreted language, with just-in-time semi-compilation
More informationProblem 1: Building and testing your own linked indexed list
CSCI 200 Lab 8 Implementing a Linked Indexed List In this lab, you will be constructing a linked indexed list. You ll then use your list to build and test a new linked queue implementation. Objectives:
More informationPerl Basics 7 Mar 2009 #fedora-classroom. Doran Barton
Perl Basics 7 Mar 2009 #fedora-classroom Doran Barton 1 LEARNING RESOURCES Books Learning Perl (Llama book) Programming Perl (Camel book) A whole bunch of other O'Reilly books Perl
More informationObject- Oriented Design with UML and Java Part I: Fundamentals
Object- Oriented Design with UML and Java Part I: Fundamentals University of Colorado 1999-2002 CSCI-4448 - Object-Oriented Programming and Design These notes as free PDF files: http://www.softwarefederation.com/cs4448.html
More informationMicrosoft Windows PowerShell v2 For Administrators
Microsoft Windows PowerShell v2 For Administrators Course 50414 5 Days Instructor-led, Hands-on Introduction This four-day instructor-led course provides students with the knowledge and skills to leverage
More informationPerl and Python ESA 2007/2008. Eelco Schatborn 27 September 2007
Perl and Python ESA 2007/2008 Eelco Schatborn eelco@os3.nl 27 September 2007 ESA: Perl Vandaag: 1. Perl introduction 2. Basic Perl: types, variables, statements,... 3. Object Oriented Perl 4. Documentation
More information