# Poor Man's Type Classes

Save this PDF as:

Size: px
Start display at page:

## Transcription

1 Poor Man's Type Classes Martin Odersky EPFL IFIP WG2.8 workin roup meetin Boston, July

2 Goals Type classes are nice. A cottae industry of Haskell prorammers has sprun up around them. Should we add type classes to OO-lanuaes, specically Scala? Problem: Conceptual expense We have already spent the keywords type and class! Type classes are essentially implicitly passed dictionaries, and dictionaries are essentially objects. Don't want to duplicate that. Idea: Concentrate on the delta between OO classes and type classes: implicits 2

3 Life without Type Classes Some standard classes for SemiGroup and Monoid: abstract class SemiGroup[a] f def add(x: a, y: a): a abstract class Monoid[a] extends SemiGroup[a] f def unit: a Two implementations of monoids: object strinmonoid extends Monoid[Strin] f def add(x: Strin, y: Strin): Strin = x.concat(y) def unit: Strin = "" object intmonoid extends Monoid[int] f def add(x: Int, y: Int): Int = x + y def unit: Int = 0 3

4 A sum method which works over arbitrary monoids: def sum[a](xs: List[a])(m: Monoid[a]): a = if (xs.isempty) m.unit else m.add(xs.head, sum(xs.tail)(m) One invokes this sum method by code such as: sum(list("a", "bc", "de"))(strinmonoid) sum(list(1, 2, 3))(intMonoid) 4

5 Implicit Parameters: The Basics The followin sliht rewrite of sum introduces m as an implicit parameter. def sum[a](xs: List[a])(implicit m: Monoid[a]): a = if (xs.isempty) m.unit else m.add(xs.head, sum(xs.tail)(m)) Can combine normal and implicit parameters. However, there may only be one implicit parameter list, and it must come last. 5

6 implicit can also be used as a modier for denitions: implicit object strinmonoid extends Monoid[Strin] f def add(x: Strin, y: Strin): Strin = x.concat(y) def unit: Strin = "" implicit object intmonoid extends Monoid[int] f def add(x: Int, y: Int): Int = x + y def unit: Int = 0 Aruments to implicit parameters can be inferred: sum(list(1, 2, 3)) This expands to: sum(list(1, 2, 3))(intMonoid) 6

7 Inferrin Implicit Aruments If an arument for an implicit parameter of type T is missin, it is inferred. An arument value is eliible to be passed, if it is itself labelled implicit, it's type is compatible with T, one of the followin holds: 1. x is accessible at the point of call by a simple identier (i.e. it is dened in same scope, inherited or imported) 2. x is dened as a static value in (some superclass of) T. If several aruments are eliible, choose most specic one. If no most specic eliible arument exists, type error. 7

8 Locality A consequence of implicit arument resolution is that one can have several instance denitions of the same operation at the same types. We always pick the one which is visible at the point of call. This is an important dierence between implicits and type classes. Rules to keep coherence: Scala has functions (which are objects) and methods (which are not). Partially applied methods are automatically converted to functions. Only methods can contain implicit parameters. Implicit parameters are instantiated where a method value is eliminated (either applied or converted to a function). 8

9 Conditional Implicits Implicit methods can themselves have implicit parameters. Example: implicit def listmonoid[a](implicit m: Monoid[a]) = new Monoid[List[a]] f def add(xs: List[a], ys: List[a]): List[a] = if (xs.isempty) ys else if (ys.isempty) xs else m.add(xs.head, ys.head) :: add(xs.tail, ys.tail) def unit = List() Then: println(sum(list(list(1, 2, 3), List(1, 2)))) translates to println(sum(list(list(1, 2, 3), List(1, 2)))(listMonoid(intMonoid)) ==> List(2, 4, 3) 9

10 External Extensibility Often, we like to add some new functionality to a pre-existin type. trait Ordered[a] f def compare(that: a): Int; def < (that: a): Boolean = (this compare that) < 0 def > (that: a): Boolean = (this compare that) > 0 def (that: a): Boolean = (this compare that) 0 def (that: a): Boolean = (this compare that) 0 Want to make Int, Strin, etc ordered. Want to make lists ordered if their elements are. Common solution: \open classes". 10

11 Implicit Conversions An implicit conversion is a unary function from S ot T, which is labelled implicit. Example: implicit def int2ordered(x: int) = new Ordered[int] f def compare(y: int) = if (x < y) 1 else if (x > y) 1 else 0 def sort[a](xs: Array[a])(implicit c: a ) Ordered[a]): Array[a] = if (xs.lenth 1) xs else f val pivot = xs(xs.lenth / 2) Array.concat( sort(xs lter (pivot >)) xs lter (pivot ==), sort(xs lter (pivot <))) val xss: Array[List[int]] sort(xss) 11

12 Translation def sort[a](xs: Array[a])(implicit c: a ) Ordered[a]): Array[a] = if (xs.lenth 1) xs else f val pivot = xs(xs.lenth / 2) Array.concat( sort(xs lter (c(pivot) >)) xs lter (pivot ==), sort(xs lter (c(pivot) <))) val xss: Array[List[int]] sort(xss)(list2ordered(int2ordered)) 12

13 Applications of Implicit Conversions An implicit conversion is applied to a term e if, e is not compatible with its expected type: val x: Ordered[int] = 1 ==> val x: Ordered[int] = int2ordered(1) In a selection e:m, if e does not have a member m. x.<(1) ==> int2ordered(x).<(1) In an application e:m(a1; : : : ; an), if e does not have a member m which can be applied to (a1; : : : ; an): val x = BiInt(10); 1 + x ==> BiInt(1) + x 13

14 Summary Scala implements the followin analoies: type class = class instance declaration = implicit denition context in a clas = inheritance context in a type = implicit parameter dictionary = object default method in class = concrete member method sinature in class = abstract member 14

15 Conclusion Implicit parameters are poor man's type classes. Conceptually lihtweiht. Piy-backed on object system. Implemented in Scala version 2, Can also model + multi-parameter type classes + parametric type classes (but no eneral functional dependencies). + associated types + constructor classes (via encodins, make this convenient we should add hiher-kinded type variables) 15

### Topic 4: Inheritance

Topic 4: Inheritance Extending, Overriding and Final Jesper Pedersen Notander Department of Computer Science Lund University Faculty of Engineering Learning Scala Seminar 2 Contents Abstract and concrete

### Overview. Elements of Programming Languages. Advanced constructs. Motivating inner class example

Overview Elements of Programming Languages Lecture 12: Object-oriented functional programming James Cheney University of Edinburgh November 6, 2015 We ve now covered: basics of functional and imperative

### CSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship.

CSCI 253 Object Oriented Design: Java Review OOP George Blankenship George Blankenship 1 Object Oriented Programming (OOP) OO Principles Abstraction Encapsulation Abstract Data Type (ADT) Implementation

### Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!

Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)

### Analyse et Conception Formelle. Lesson 5. Crash Course on Scala

Analyse et Conception Formelle Lesson 5 Crash Course on Scala T. Genet (ISTIC/IRISA) ACF-5 1 / 36 Bibliography Simply Scala. Online tutorial: http://www.simply.com/fr http://www.simply.com/ Programming

### Tutorial on Writing Modular Programs in Scala

Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 13 September 2006 Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 1 of 45 Welcome to the

### Scala Programming Language

Scala Programming Language Tomáš Bureš DISTRIBUTED SYSTEMS RESEARCH GROUP http://nenya.ms.mff.cuni.cz CHARLES UNIVERSITY PRAGUE Faculty of Mathematics and Physics What is Scala Programming language class-based

### Java Programming Language

Lecture 1 Part II Java Programming Language Additional Features and Constructs Topics in Quantitative Finance: Numerical Solutions of Partial Differential Equations Instructor: Iraj Kani Subclasses and

### Type Classes with Functional Dependencies

Appears in Proceedings of the 9th European Symposium on Programming, ESOP 2000, Berlin, Germany, March 2000, Springer-Verlag LNCS 1782. Type Classes with Functional Dependencies Mark P. Jones Department

### A Case Study in DSL Development

A Case Study in DSL Development An Experiment with Python and Scala Klaus Havelund Michel Ingham David Wagner Jet Propulsion Laboratory, California Institute of Technology klaus.havelund, michel.d.ingham,

### A Scala Tutorial for Java programmers

A Scala Tutorial for Java programmers Version 1.3 January 16, 2014 Michel Schinz, Philipp Haller PROGRAMMING METHODS LABORATORY EPFL SWITZERLAND 2 1 Introduction This document gives a quick introduction

### Managing large sound databases using Mpeg7

Max Jacob 1 1 Institut de Recherche et Coordination Acoustique/Musique (IRCAM), place Igor Stravinsky 1, 75003, Paris, France Correspondence should be addressed to Max Jacob (max.jacob@ircam.fr) ABSTRACT

### Java Interview Questions and Answers

1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

### Datatype-generic data migrations

Datatype-generic data migrations IFIP WG 21 meeting #73, Lökeberg, Sweden Andres Löh August 31, 2015 The Haskell Consultants Motivation Datatypes evolve Motivation Datatypes evolve Example: data Person

Introduction Object-Oriented Network Programming CORBA addresses two challenges of developing distributed systems: 1. Making distributed application development no more dicult than developing centralized

### CSE 303 Concepts and Tools for Software Development. Magdalena Balazinska Winter 2010 Lecture 19 Inheritance (virtual functions and abstract classes)

CSE 303 Concepts and Tools for Software Development Magdalena Balazinska Winter 2010 Lecture 19 Inheritance (virtual functions and abstract classes) Where We Are We have already covered the introduction

### On every sheet please give your first name, last name, and matriculation number.

RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK 2 RWTH Aachen D-52056 Aachen GERMANY http://verify.rwth-aachen.de/ LuFG Informatik II Functional Programming Exam,

### Glossary of Object Oriented Terms

Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

### PHP Object Oriented Classes and objects

Web Development II Department of Software and Computing Systems PHP Object Oriented Classes and objects Sergio Luján Mora Jaume Aragonés Ferrero Department of Software and Computing Systems DLSI - Universidad

### CSc 372. Comparative Programming Languages. 21 : Haskell Accumulative Recursion. Department of Computer Science University of Arizona

1/18 CSc 372 Comparative Programming Languages 21 : Haskell Accumulative Recursion Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/18 Stack

### POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful

POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/

### Computing Concepts with Java Essentials

2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

### Getting Started with the Internet Communications Engine

Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2

### Object Oriented Programming (Interview Questions & Answers)

Object Oriented Programming (Interview Questions & Answers) Collected from different websites. Use for non-commercial purpose. Sohail Basheer Lecturer- Computer Science (visiting) Department of Computer

### CS1002: COMPUTER SCIENCE OO MODELLING & DESIGN: WEEK 5

This Week CS1002: COMPUTER SCIENCE OO MODELLING & DESIGN: WEEK 5 School of Computer Science University of St Andrews Graham Kirby Alan Dearle More on Java classes Constructors Modifiers cdn.videogum.com/img/thumbnails/photos/commenter.jpg

### Chapter 12. Support for Object-Oriented Programming ISBN

Chapter 12 Support for Object-Oriented Programming ISBN 0-321-33025-0 Chapter 12 Topics Introduction Object-Oriented Programming Design Issues for Object-Oriented Languages Support for Object-Oriented

### The AP Java Subset. A Topics. Primitive Types. Operators. Topics. int double boolean

The AP Java Subset A Topics Topics Primitive Types Operators int double boolean +, -, *, /, % ++, -- = +=, -=, *=, /=, %= ==,!=, , = &&,,! Numeric Casts String Concatenation (int) (double) + will

### Formal Engineering for Industrial Software Development

Shaoying Liu Formal Engineering for Industrial Software Development Using the SOFL Method With 90 Figures and 30 Tables Springer Contents Introduction 1 1.1 Software Life Cycle... 2 1.2 The Problem 4 1.3

### 13 Classes & Objects with Constructors/Destructors

13 Classes & Objects with Constructors/Destructors 13.1 Introduction In object oriented programming, the emphasis is on data rather than function. Class is a way that binds the data & function together.

### SYSTEMS PROGRAMMING C++ INTRODUCTION

Faculty of Computer Science / Institute of Systems Architecture / Operating Systems SYSTEMS PROGRAMMING C++ INTRODUCTION Alexander Warg WHY C++? C++ is the language that allows to express ideas from the

### Description of Class Mutation Mutation Operators for Java

Description of Class Mutation Mutation Operators for Java Yu-Seung Ma Electronics and Telecommunications Research Institute, Korea ysma@etri.re.kr Jeff Offutt Software Engineering George Mason University

### Chong-ryang Gung (正兩弓, Strong Bow): Ye Gung (禮弓, Ritual /Ceremonial Bow): Mok Gung (木弓, Wooden Bow) Chol Gung (鐵弓, Iron Bow)

o 1 o o o 2 3 o o o??? o o o o o o o ~ ~ o o oo o o oo ~ 4 o o o o o o o 5 o o o oo oo oo o o o o o o 6 o o o o o o o o o o o o o o o o 7 8 o o o o o o o o o o o 9 10 o o o o 11 o 12 o o o o o o 13 o o

### Aspect-Oriented Programming with Type Classes

Aspect-Oriented Programming with Type Classes Martin Sulzmann School of Computing, National University of Singapore S16 Level 5, 3 Science Drive 2, Singapore 117543 sulzmann@comp.nus.edu.sg Meng Wang School

### types, but key declarations and constraints Similar CREATE X commands for other schema ëdrop X name" deletes the created element of beer VARCHARè20è,

Dening a Database Schema CREATE TABLE name èlist of elementsè. Principal elements are attributes and their types, but key declarations and constraints also appear. Similar CREATE X commands for other schema

### Multiply and Divide Mixed Numbers and Complex Fractions

OpenStax Staging module: m00 Multiply and Divide Mixed Numbers and Complex Fractions Words Numbers This work is produced by OpenStax Staging and licensed under the Creative Commons Attribution License.0

### Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas

CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage

### History OOP languages Year Language 1967 Simula-67 1983 Smalltalk

History OOP languages Intro 1 Year Language reported dates vary for some languages... design Vs delievered 1957 Fortran High level programming language 1958 Lisp 1959 Cobol 1960 Algol Structured Programming

### Course: Introduction to Java Using Eclipse Training

Course: Introduction to Java Using Eclipse Training Course Length: Duration: 5 days Course Code: WA1278 DESCRIPTION: This course introduces the Java programming language and how to develop Java applications

### JAVA - INHERITANCE. extends is the keyword used to inherit the properties of a class. Below given is the syntax of extends keyword.

http://www.tutorialspoint.com/java/java_inheritance.htm JAVA - INHERITANCE Copyright tutorialspoint.com Inheritance can be defined as the process where one class acquires the properties methodsandfields

### 10266A: Programming in C# with Microsoft Visual Studio 2010

10266A: Programming in C# with Microsoft Visual Studio 2010 Course Overview The course focuses on the C# program structure, language syntax, and implementation details with.net Framework 4.0. This course

### CSCU9T4: Object Modelling, principles of OO design and implementation

CSCU9T4: Object Modelling, principles of OO design and implementation CSCU9T4 Spring 2016 1 What is Inheritance? Why use Inheritance? Discussion CSCU9T4 Spring 2016 2 Inheritance In inheritance, a subclass

### Scala type classes and machine learning. David Andrzejewski Bay Area Scala Enthusiasts - 1/14/2013, 1/16/2013

Scala type classes and machine learning David Andrzejewski Bay Area Scala Enthusiasts - 1/14/2013, 1/16/2013 Context: Sumo Logic Mission: Transform Machine Data into IT and Business Insights Offering:

### Systems of Linear Equations in Two Variables

Chapter 6 Systems of Linear Equations in Two Variables Up to this point, when solving equations, we have always solved one equation for an answer. However, in the previous chapter, we saw that the equation

### A Comparison of the Basic Syntax of Python and Java

Python Python supports many (but not all) aspects of object-oriented programming; but it is possible to write a Python program without making any use of OO concepts. Python is designed to be used interpretively.

### Compiling Scala to LLVM

Compiling Scala to LLVM Geoff Reedy University of New Mexico Scala Days 2011 Motivation Why Scala on LLVM? Compiles to native code Fast startup Efficient implementations Leverage LLVM optimizations/analyses

### The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1

The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose

### RELATIONAL DATABASE DESIGN VIA ER MODELLING CHAPTER 9 (6/E) CHAPTER 7 (5/E)

RELATIONAL DATABASE DESIGN VIA ER MODELLING CHAPTER 9 (6/E) CHAPTER 7 (5/E) 2 LECTURE OUTLINE Relational Database Design Using ER-to-Relational Mapping Algorithm to convert the basic ER model constructs

### Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java

Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/

### Semester Review. CSC 301, Fall 2015

Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!

### Discovering Counterexamples (and Proof Ingredients) for Knuth-like k-principles

Discovering Counterexamples (and Proof Ingredients) for Knuth-like 0-1-... -k-principles Moritz Fürneisen and Janis Voigtländer University of Bonn October 9th, 2012 Knuth s 0-1-Principle [Knuth 1973] Informally:

### CS 106 Introduction to Computer Science I

CS 106 Introduction to Computer Science I 04 / 06 / 2015 Instructor: Michael Eckmann Today s Topics Comments and/or Questions? Let's finish Pet/Dog/Cat/TalkingDog classes Overriding methods Abstract New

### Reactive Slick for Database Programming. Stefan Zeiger

Reactive Slick for Database Programming Stefan Zeiger Introduction Slick 3.0 Reactive Slick Completely new API for executing database actions Old API (Invoker, Executor) deprecated Will be removed in 3.1

### Java Interfaces. Recall: A List Interface. Another Java Interface Example. Interface Notes. Why an interface construct? Interfaces & Java Types

Interfaces & Java Types Lecture 10 CS211 Fall 2005 Java Interfaces So far, we have mostly talked about interfaces informally, in the English sense of the word An interface describes how a client interacts

### Conc-Trees. Parallel Programming and Data Analysis Aleksandar Prokopec

Conc-Trees Parallel Programming and Data Analysis Aleksandar Prokopec List Data Type Let s recall the list data type in functional programming. sealed trait List[+T] { def head: T def tail: List[T] case

### C++ tutorial. C++ tutorial

Introduction I I will assume that you know some basics of C++: # include < iostream > int main ( void ) { std :: cout

### Implementation Inheritance

Implementation Inheritance Computer Science and Engineering College of Engineering The Ohio State University Lecture 12 Recall: Interface Inheritance void select (Person p) { //declared type of p is: //dynamic

### Java Review (Essentials of Java for Hadoop)

Java Review (Essentials of Java for Hadoop) Have You Joined Our LinkedIn Group? What is Java? Java JRE - Java is not just a programming language but it is a complete platform for object oriented programming.

### Searching Algorithms

Searching Algorithms The Search Problem Problem Statement: Given a set of data e.g., int [] arr = {10, 2, 7, 9, 7, 4}; and a particular value, e.g., int val = 7; Find the first index of the value in the

### Primitives and Arithmetic

CS106A, Stanford Handout #29 Fall, 2004-05 Nick Parlante Primitives and Arithmetic Objects vs. Primitives Types in Java are divided into two camps: objects and primitives. Objects are relatively complex

### Summary. Pre requisition. Content Details: 1. Basics in C++

Summary C++ Language is one of the approaches to provide object-oriented functionality with C like syntax. C++ adds greater typing strength, scoping and other tools useful in object-oriented programming

### Lecture Notes on Programming Languages

Lecture Notes on Programming Languages 1 Lecture 09: Support for Object-Oriented Programming This lecture discusses how programming languages support object-oriented programming. Topics to be covered include:

### An Introduction To UML Class Diagrams Classes

An Introduction To UML Class Diagrams Classes 1. Represent a user-created or defined data type a. they are an abstract data type (ADT) b. they implement data hiding and encapsulation c. they establish

### Introduction to Java A First Look

Introduction to Java A First Look Java is a second or third generation object language Integrates many of best features Smalltalk C++ Like Smalltalk Everything is an object Interpreted or just in time

### Detecting Pattern-Match Failures in Haskell. Neil Mitchell and Colin Runciman York University www.cs.york.ac.uk/~ndm/catch

Detecting Pattern-Match Failures in Haskell Neil Mitchell and Colin Runciman York University www.cs.york.ac.uk/~ndm/catch Does this code crash? risers [] = [] risers [x] = [[x]] risers (x:y:etc) = if x

### www.sahajsolns.com Chapter 4 OOPS WITH C++ Sahaj Computer Solutions

Chapter 4 OOPS WITH C++ Sahaj Computer Solutions 1 Session Objectives Classes and Objects Class Declaration Class Members Data Constructors Destructors Member Functions Class Member Visibility Private,

### Java CPD (I) Frans Coenen Department of Computer Science

Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials

### Chapter 6: Programming Languages

Chapter 6: Programming Languages Computer Science: An Overview Eleventh Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Chapter 6: Programming Languages 6.1 Historical Perspective

### SL-110: Fundamentals of Java Revision 15 October Sun Educational Services Instructor-Led Course Description

Sun Educational Services Instructor-Led Course Description Fundamentals of Java SL-110 The Fundamentals of the Java course provides students, with little or no programming experience, with the basics of

### Agile Software Development

Agile Software Development Lecturer: Raman Ramsin Lecture 13 Refactoring Part 3 1 Dealing with Generalization: Pull Up Constructor Body Pull Up Constructor Body You have constructors on subclasses with

### Java Programming: Final Examination 6/ 姓名 : 學號 : 分數 :

Java Programming: Final Examination 6/22 2012 姓名 : 學號 : 分數 : I (105 pts) 選擇題 [Questions marked with * (ex: Question 9) mean they have more than one answer ] 1. Fill in the blank in: Comparable c = new

### AP Computer Science Java Subset

APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall

### Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is

Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is preceded by an equal sign d. its name has undereline 2. Associations

### Chapter 13 - Inheritance

Goals Chapter 13 - Inheritance To learn about inheritance To understand how to inherit and override superclass methods To be able to invoke superclass constructors To learn about protected and package

### How Scala Improved Our Java

How Scala Improved Our Java Sam Reid PhET Interactive Simulations University of Colorado http://spot.colorado.edu/~reids/ PhET Interactive Simulations Provides free, open source educational science simulations

### Introduction to Object-Oriented Programming

Introduction to Object-Oriented Programming Programs and Methods Christopher Simpkins chris.simpkins@gatech.edu CS 1331 (Georgia Tech) Programs and Methods 1 / 8 The Anatomy of a Java Program It is customary

### PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?

1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members

### Part I. Multiple Choice Questions (2 points each):

Part I. Multiple Choice Questions (2 points each): 1. Which of the following is NOT a key component of object oriented programming? (a) Inheritance (b) Encapsulation (c) Polymorphism (d) Parallelism ******

### Virtual Environments'98 2 Figure 1: Animation of two persons walking oriented programming community, this can only be considered object-based. The ext

Object-Oriented Animations with VRML++ Stephan Diehl FB 14 - Informatik, Universitat des Saarlandes, Postfach 15 11 50, 66041 Saarbrucken, GERMANY Email: diehl@cs.uni-sb.de, WWW: http://www.cs.uni-sb.de/~diehl

### Genericity Overview FOOP. Genericity Overview

2015-04-17 Genericity Overview Genericity Overview 2015-04-17 Genericity Overview 1 Formal Foundations F-bound Genericity: S T S supports binary methods, restricted to one inheritance level Java, C# Java:

### Fundamentals of Java Programming

Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors

### PENSION REFRESH FACILITY

Perpetual DIY Super Perpetual Superannuation Limited ABN 84 008 416 831 AFSL 225246 RSE L0003315 Perpetual Trustee Company Limited ABN 42 000 001 007 AFSL 236643 This form can be used by members of the

### CS 111 Classes I 1. Software Organization View to this point:

CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects

### Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named

### Visual Basic Programming. An Introduction

Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides

### The Clean programming language. Group 25, Jingui Li, Daren Tuzi

The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was

### On every sheet please give your first name, last name, and matriculation number.

RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK 2 RWTH Aachen D-52056 Aachen GERMANY http://verify.rwth-aachen.de/ LuFG Informatik II Functional Programming Exam,

### Anatomy of a Game Engine. By: R.G. (Dick) Baldwin

Anatomy of a Game Engine By: R.G. (Dick) Baldwin Anatomy of a Game Engine By: R.G. (Dick) Baldwin Online: < http://cnx.org/content/col11489/1.13/ > OpenStax-CNX This selection and arrangement of content

### Dynamic conguration management in a graph-oriented Distributed Programming Environment

Science of Computer Programming 48 (2003) 43 65 www.elsevier.com/locate/scico Dynamic conguration management in a graph-oriented Distributed Programming Environment Jiannong Cao a;, Alvin Chan a, Yudong

### Chapter 12. Support for. Oi t Programming

Chapter 12 Support for Object-Oriented Oi t Programming Chapter 12 Topics Introduction Object-Oriented Programming Design Issues for Object-Oriented Languages Support for Object-Oriented Programming g

### D06 PROGRAMMING with JAVA

Cicles Formatius de Grau Superior Desenvolupament d Aplicacions Informàtiques D06 PROGRAMMING with JAVA Ch13 Inheritance PowerPoint presentation, created by Angel A. Juan - ajuanp(@)gmail.com, for accompanying

### In the above, the number 19 is an example of a number because its only positive factors are one and itself.

Math 100 Greatest Common Factor and Factoring by Grouping (Review) Factoring Definition: A factor is a number, variable, monomial, or polynomial which is multiplied by another number, variable, monomial,

### Programming Languages Featherweight Java David Walker

Programming Languages Featherweight Java David Walker Overview Featherweight Java (FJ), a minimal Javalike language. Models inheritance and subtyping. Immutable objects: no mutation of fields. Trivialized

### The Sun Certified Associate for the Java Platform, Standard Edition, Exam Version 1.0

The following applies to all exams: Once exam vouchers are purchased you have up to one year from the date of purchase to use it. Each voucher is valid for one exam and may only be used at an Authorized

### Methods and Inheritance: Overriding

Methods and Inheritance: Overriding We might want to require that every Person can dance. But the way a Lecturer dances is not likely to be the same as the way a Student dances... Student overrides the

### CS193j, Stanford Handout #10 OOP 3

CS193j, Stanford Handout #10 Summer, 2003 Manu Kumar OOP 3 Abstract Superclass Factor Common Code Up Several related classes with overlapping code Factor common code up into a common superclass Examples

### This class allows the random movement of the file pointers. The file pointer can be moved back and forth.

RandomAccessFile This class allows the random movement of the file pointers. The file pointer can be moved back and forth. Constructor: RandomAccessFile(String name, String mode) Creates a random access