Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.
-
Upload
dontae-withrow -
Category
Documents
-
view
222 -
download
0
Transcript of Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.
![Page 1: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/1.jpg)
Object Oriented Programming in APL
A New Direction
Dan Baronet2008
V1.20
![Page 2: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/2.jpg)
Oct 2008 OOAPL 2
Object Orientation
Dyalog V11 was released in 2006.One of the major features was:
![Page 3: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/3.jpg)
Oct 2008 OOAPL 3
This presentation is based on two things:
1.Why should I know about Object Orientation programming?
2.How do I use it in APL?
![Page 4: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/4.jpg)
Oct 2008 OOAPL 5
Reasons: why do this?
Because Object Orientation is a Valuable Tool of Thought!
To be able to Share Tools and Components more Easily
To help us Manage Complexity in all Project Phases
To use .Net more easily
![Page 5: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/5.jpg)
Oct 2008 OOAPL 7
Another tool
Object Orientation is another tool for programmers. Users won’t see any difference.
It is a way for programmers to simplify their lives by supplying each other with already made objects (almost) ready to use.
![Page 6: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/6.jpg)
Oct 2008 OOAPL 9
The evolution of data
1. Elementary data elements (like int) and arrays of them (all the same)
2. Structures (like {i: int; d: date}), many elementary elements or structures (recursive)
3. Namespaces (structures whose elements are referred to by name). They include code.
4. Classes (namespaces with initializers & cleaners)
![Page 7: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/7.jpg)
Oct 2008 OOAPL 11
The evolution of dataIn traditional (procedural) systems,
data is separated from code:
data
code
![Page 8: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/8.jpg)
Oct 2008 OOAPL 12
The evolution of dataThis is the same in traditional APL
systems, data is separated from code:data
code
![Page 9: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/9.jpg)
Oct 2008 OOAPL 13
The evolution of dataIn OO systems, data is more tightly
coupled with code:
privatecode
data
![Page 10: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/10.jpg)
Oct 2008 OOAPL 14
The evolution of dataSame thing in OO APL systems:
privatecode
data
![Page 11: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/11.jpg)
Oct 2008 OOAPL 15
The Object Oriented paradigm
![Page 12: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/12.jpg)
Oct 2008 OOAPL 16
OO fundamental concepts
The Object Oriented paradigm is based on:
1.Classes & Interfaces2.Instances 3.Members4.Message passing5.Inheritance6.Encapsulation7.Polymorphism
![Page 13: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/13.jpg)
Oct 2008 OOAPL 17
OO fundamental concepts
1. Classes
A class defines the abstract characteristics of some object, akin to a blueprint.
It describes a collection of members (data and code)
Classes can be nested
![Page 14: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/14.jpg)
Oct 2008 OOAPL 18
OO fundamental concepts
Classes
ex: House blueprint
![Page 15: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/15.jpg)
Oct 2008 OOAPL 19
OO fundamental concepts
ClassesA class can implement one or more
interfaces.An interface describes what it should do.The class describes how it should be done.If a class implements an interface it should
do it completely, no partial implementation is allowed.
![Page 16: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/16.jpg)
Oct 2008 OOAPL 20
OO fundamental concepts
InterfacesAn interface describes how to
communicate with an object.Ex: electrical system & electrical
outlets
![Page 17: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/17.jpg)
Oct 2008 OOAPL 21
Interfaces - exampleThe following maneuvering interface
describes what HAS to be done with a machine:
Method Steer (direction); // where to go
Method Accellerate (power); // go faster
Method SlowDown (strength); // go slower
It does NOT specify HOW it should be done.
![Page 18: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/18.jpg)
Oct 2008 OOAPL 22
Interfaces - exampleThis car object implements maneuvering:
Class car : maneuvering;Method SteeringWheel: implements maneuvering.Steer (turn); ...Method GasPedal: implements maneuvering.Accellerate (push); ...Method BreakPedal: implements maneuvering.SlowDown (hit);
![Page 19: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/19.jpg)
Oct 2008 OOAPL 23
Interfaces - exampleThis plane object implements maneuvering:
Class plane : maneuvering;Method Yoke: implements maneuvering.Steer (move); ...Method Handle: implements maneuvering.Accellerate (pp); ...Method Flaps: implements maneuvering.SlowDown (degree);
![Page 20: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/20.jpg)
Oct 2008 OOAPL 24
OO fundamental concepts
2. InstancesThose are tangible objects created
from a specific class.Upon creation any specific action is
carried out by the constructor (code) of the class if some sort of initialization is required.
Upon destruction, the destructor is responsible for cleaning up.
![Page 21: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/21.jpg)
Oct 2008 OOAPL 25
OO fundamental concepts
2. InstancesNew House (Blue):
After the creation of the new House the Constructor paints it in blue
![Page 22: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/22.jpg)
Oct 2008 OOAPL 26
OO fundamental concepts
3. MembersThis is the code and the data of a class.The code is divided into Methods
(functions) and data is divided into Fields (variables).
There are also Properties which are Fields implemented via functions to read/set them.
![Page 23: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/23.jpg)
Oct 2008 OOAPL 27
OO fundamental concepts
MembersThese can reside inside the class if shared
or in the instance.Ex: the .Net class DateTime has a member
Now that does not require an instance to be called. e.g.DateTime.Now straight from the class⍝
2007/10/21 9:12:04
![Page 24: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/24.jpg)
Oct 2008 OOAPL 28
OO fundamental concepts
Shared vs Instance
S1 S2 S3I1 I2 I3 I4
Shared membersremain in the class
S1 S2 S3I1 I2 I3 I4
S1 S2 S3I1 I2 I3 I4
S1 S2 S3I1 I2 I3 I4
Instance members are created in theinstance
![Page 25: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/25.jpg)
Oct 2008 OOAPL 29
OO fundamental conceptsMembers: MethodsThose can either reside in the class
(shared method) or in the instance (instance method).
There are also abstract methods (e.g. in interfaces) with no code, only calling syntax.
Constructors and destructors are methods.
![Page 26: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/26.jpg)
Oct 2008 OOAPL 30
OO fundamental conceptsMembers: FieldsThose can either reside in the class
(shared field) or in the instance (instance field).
They can also be read only.
![Page 27: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/27.jpg)
Oct 2008 OOAPL 31
OO fundamental conceptsMembers: PropertiesThose are Fields implemented by
accessing methods, i.e. PropX←value ⍝ is implemented by
SET value
They can either reside in the class (shared property) or in the instance (instance property).
![Page 28: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/28.jpg)
Oct 2008 OOAPL 32
OO fundamental concepts
4. Message passingThis is the (usually asynchronous)
sending (often by copy) of a data item to a communication endpoint (process, thread, socket, etc.).
In procedural languages like Dyalog, it corresponds to a call made to a routine.
![Page 29: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/29.jpg)
Oct 2008 OOAPL 33
OO fundamental concepts
5. InheritanceThis is a way to avoid rewriting code by
writing general classes and classes that derive from them and inherit their members.
This helps achieve reusability, a cornerstone of OO by avoiding to rewrite code and use what already exists.
![Page 30: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/30.jpg)
Oct 2008 OOAPL 34
OO fundamental concepts
Inheritance
We say that a (derived) class is based on another one.
All classes (but one) are derived from another one or by System.Object (the default)
![Page 31: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/31.jpg)
Oct 2008 OOAPL 35
OO fundamental concepts
Inheritance: Based classes (reusability)
A class can be based on another based class. See class Collie based on Dog based on Animal
Animal
Dog: Animal
Rex (Collie)Fish: Animal
Fido (Collie)
Great Dane: Dog
Collie: Dog
Instances
Classes
![Page 32: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/32.jpg)
Oct 2008 OOAPL 36
OO fundamental concepts
Inheritance: multiple inheritance
A class can be based on several other classes Here class Mule is made out of 2 different classes.
Horse
Donkey
Mule
![Page 33: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/33.jpg)
Oct 2008 OOAPL 37
OO fundamental concepts
Inheritance: simulate multiple inheritance
A class can implement several interfaces. Here class Penguin implements 2 different behaviours (interfaces):
Fish(swim,eggs)
Bird(fly,eggs,sing)
Penguin:-Swims -Flies not-1 egg/yr-Croaks
![Page 34: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/34.jpg)
Oct 2008 OOAPL 38
OO fundamental concepts
InheritanceWhen an instance is created from a class
based on another one it inherits all its members automatically.
Members can be redefined but subroutines must be specifically set to override base class subroutines.
![Page 35: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/35.jpg)
Oct 2008 OOAPL 39
OO fundamental concepts
Inheritance: a derived class inherits all the base members
C1memberAmemberB
C2: C1
memberCmemberD
![Page 36: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/36.jpg)
Oct 2008 OOAPL 40
OO fundamental concepts
Inheritance: a derived class inherits all the base members
C1memberAmemberBmemberC
C2: C1
memberCmemberD
![Page 37: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/37.jpg)
Oct 2008 OOAPL 41
OO fundamental concepts
Inheritance
Initialization is performed by the constructor.
If a class is derived, the base class' constructor will also be called if there is one.
![Page 38: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/38.jpg)
Oct 2008 OOAPL 42
OO fundamental concepts
InheritanceSome classes may be sealed to prevent
other classes from inheriting them.
![Page 39: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/39.jpg)
Oct 2008 OOAPL 43
Override concept
// M1 calls A’s M2:(NEW A).M1
I am A
// M1 calls B’s M2:(NEW B).M1
I am B
M1
M2 M2‘I am A’
M1
M2 M2‘I am B’
Class A Class B
![Page 40: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/40.jpg)
Oct 2008 OOAPL 44
Based classes
// M1 calls A’s M2:(NEW A).M1
I am A
// M1 calls A’s M2:(NEW B).M1
I am A
M1
M2 M2‘I am A’
There is no M1 in Bso A’s (on which B is based) M1 is used
M2‘I am B’
Class A Class B: A
![Page 41: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/41.jpg)
Oct 2008 OOAPL 45
Based classes
M1
M2 M2‘I am A’
There is no M1 in Bso A’s (on which B is based) M1 is used
M2: Override‘I am B’
Class A Class B: A
// M1 calls A’s M2:(NEW A).M1
I am A
// M1 calls A’s M2:(NEW B).M1
I am A
A:M2 does not allow to be overridden
![Page 42: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/42.jpg)
Oct 2008 OOAPL 46
M2: Override‘I am B’
Based classes
M1
M2:Overridable
M2‘I am A’
Class A Class B: A
There is no M1 in Bso A’s (on which B is based) M1 is used
// M1 calls A’s M2:(NEW A).M1
I am A
// M1 calls B’s M2:(NEW B).M1
I am B
A:M2 does allow to be overridden AND B wants to override it
![Page 43: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/43.jpg)
Oct 2008 OOAPL 47
OO fundamental concepts6. Encapsulation• Hides the underlying functionality.• It conceals the exact details of how a
particular class works from objects (external or internal) that use its code.
• This allows to modify the internal implementation of a class without requiring changes to its services (i.e. methods).
![Page 44: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/44.jpg)
Oct 2008 OOAPL 48
Example: a carConsider a car: the functionality is hidden, it
is encapsulated, you don’t see all the wiring inside, you’re only given specific controls to manipulate the car.
![Page 45: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/45.jpg)
Oct 2008 OOAPL 49
Encapsulation (access)To allow access to a member there
are various level definitions.
For example, to expose a member you must use some syntax that will declare it public.
By default, private is the norm.
![Page 46: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/46.jpg)
Oct 2008 OOAPL 50
OO fundamental concepts
Encapsulation: privateA private member cannot be seen from
anywhere. Methods can only access it from inside the class.
Nested or derived objects can't see it either.
M is onlyseen in thewhite area
sub1
sub2
![Page 47: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/47.jpg)
Oct 2008 OOAPL 51
OO fundamental concepts
Encapsulation: protectedA protected member can only be seen
from within the instance of from nested or derived objects.
M is onlyseen in thewhite area
sub1
sub2
![Page 48: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/48.jpg)
Oct 2008 OOAPL 52
OO fundamental concepts
Encapsulation: publicA public member can be seen from
anywhere. All Methods can access it from anywhere whether it is public shared or public instance.
M is seenin all thepale area
sub1
sub2
![Page 49: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/49.jpg)
Oct 2008 OOAPL 53
OO fundamental concepts
Encapsulation: friendA class declared friend can see the
offerer’s private and public members.
Private Bpv
Public Bpu
Friend A
Class A Class B
Private ApvPublic Apu
Here A sees B’s membersas its own members
![Page 50: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/50.jpg)
Oct 2008 OOAPL 54
OO fundamental concepts
7. PolymorphismIt is behavior that allows a single definition
to be used with different types of data.This is a way to call various sections of
code using the same name.Typed languages can tell the difference by
looking at the “signature” of the functions (their number of arguments and their types)
![Page 51: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/51.jpg)
Oct 2008 OOAPL 55
OO fundamental conceptsPolymorphism example
Foo (integer arg){// fn called with// an integer argPrint 42 //“Int arg”}
Foo (string arg){// fn called with// a string argPrint “String arg”}
Same function name, different code
![Page 52: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/52.jpg)
Oct 2008 OOAPL 56
OO fundamental concepts
PolymorphismA program that accepts multiple definitionsis said to be overloaded.
Basic language example: + is used to add and catenate
Print 2+24
Print ‘aaa’+’bbb’aaabbb
![Page 53: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/53.jpg)
Oct 2008 OOAPL 57
OO fundamental concepts
More concepts
There are many more concepts.Those presented here are the most common ones.
For example, Casting is not an OO concept but it is often used.
![Page 54: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/54.jpg)
Oct 2008 OOAPL 58
OO Concepts Summary• OO is based on +-7 key concepts• Classes are blueprints• Instances are objects created from
classes• They contain members (data & code)• Their access is restricted• The relation between classes is based
on inheritance and/or specific access
![Page 55: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/55.jpg)
Oct 2008 OOAPL 59
End of OO basics
QUESTIONS
?
![Page 56: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/56.jpg)
Oct 2008 OOAPL 60
![Page 57: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/57.jpg)
Oct 2008 OOAPL 61
Implementation• Dyalog follows C# rules closely• The extensions to the language
have been made in following with the :Keywords scheme introduced in the 90s (All new keywords start with ‘:’ )
• Some new system functions have been added and
• Some new system commands
![Page 58: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/58.jpg)
Oct 2008 OOAPL 62
ImplementationLet’s see how Dyalog APL does this:
1.Classes and interfaces2.Instances 3.Members4.Message passing5.Inheritance6.Encapsulation7.Polymorphism
![Page 59: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/59.jpg)
Oct 2008 OOAPL 63
Implementation: classesA class can be defined using the )EDitor
as in )ED ○ MyClass
Upon exiting, MyClass will be defined in the current namespace (e.g. #)
![Page 60: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/60.jpg)
Oct 2008 OOAPL 64
Implementation: classesIn the workspace MyClass appears
as a namespace:⎕NC ‘MyClass’
9)CLASSES
MyClass
![Page 61: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/61.jpg)
Oct 2008 OOAPL 65
Implementation: membersThe members in a class are:• Field: same as a variable• Method: same as a function• Property: looks and feels like a variable
but implemented as a (pair of) functions
All can be either public or private (the default)
![Page 62: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/62.jpg)
Oct 2008 OOAPL 66
Implementation: members
The class to the right shows a few fields (vars) and their access.
The access is the same for methods (fns) and properties.
![Page 63: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/63.jpg)
Oct 2008 OOAPL 67
Implementation: membersThe class to the
right shows a few methods (fns) and their access.
<mon1> is also used as a constructor. It MUST be public.
![Page 64: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/64.jpg)
Oct 2008 OOAPL 68
Implementation: membersThe class to the
right shows 2 properties and their access.
The 1st one is private and readonly (it has no set fn)
The 2nd one is public read/write
![Page 65: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/65.jpg)
Oct 2008 OOAPL 69
Classes are like blueprints: they define how things should be.
⎕NEW is a new system function that creates an object using a class as an instance.
Whatever is in the class will appear in the instance as a copy, not a reference
Implementation: instances
![Page 66: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/66.jpg)
Oct 2008 OOAPL 70
⎕NEW accepts a one or two elements argument.
The 1st one is the class (not in quotes)The 2nd, if present, is what to
start/initialize the instance with. It can only be supplied if the class allows it.
Implementation: NEW⎕
![Page 67: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/67.jpg)
Oct 2008 OOAPL 71
Example:myInstance← ⎕NEW MyClass
The display form includes [brackets] by defaultmyInstance
#.[MyClass]It is another type of namespace⎕NC ‘myInstance’
9
Implementation: NEW⎕
![Page 68: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/68.jpg)
Oct 2008 OOAPL 72
⎕DF allows to change the default Display Form of a namespace.
Example:⎕←obj←⎕NEW MyClass
#.[MyClass]obj.⎕DF ‘OO class’
objOO class
Implementation: DF⎕
![Page 69: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/69.jpg)
Oct 2008 OOAPL 73
Classes may require something to initialize the instance. Ex:)ED ○ Animal
Implementation: constructors
Here an animal mustbe have at least twocharacteristics:1.# of legs2. the sounds it makes
![Page 70: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/70.jpg)
Oct 2008 OOAPL 74
Several instances can be made up of the same Animal class:
Implementation: constructors
After running thisfunction in a cleanspace we have:
)obsfish monkey snake tiger Animal
⎕NC ‘animals’ this is a variable holding 4 instances⍝2
animals.Nlegs how many legs for each animal?⍝4 0 0 2
![Page 71: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/71.jpg)
Oct 2008 OOAPL 75
Implementation: message passing
In APL this merely consists in calling the methods directly either from the instance or from the class if shared, e.g.
Myclass.sharedFn argsor
myInstance.Fn args args if required⍝
![Page 72: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/72.jpg)
Oct 2008 OOAPL 76
Implementation: inheritanceInheritance: Based classes
A class can be based on another based class. See class Collie based on Dog based on Animal
Animal
Dog: Animal
Rex (Collie)Fish: Animal
Fido (Collie)
Collie: Dog
Instances
Classes
Great Dane: Dog
![Page 73: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/73.jpg)
Oct 2008 OOAPL 77
Example: a bird’s generic description is ‘plain Bird’
Birdy← NEW Bird⎕
Birdy.Desc
plain Bird
Implementation: inheritance
Bird Birdy (Bird)
When Birdy is created, Bird’s constructor is called
![Page 74: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/74.jpg)
Oct 2008 OOAPL 78
If a base class has a constructor it must be called.
Base constructors are called when the :Implements constructor statement is reached.
If several classes are based one on another their constructors’ call are made in the same fashion.
Implementation: inheritance
![Page 75: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/75.jpg)
Oct 2008 OOAPL 79
Example: a parrot is a bird
Coco← NEW Parrot⎕Coco.Desc
Not a plain Bird, a Parrot
Implementation: inheritance
Bird
Birdy (Bird)
Parrot: Bird Coco (Parrot)
![Page 76: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/76.jpg)
Oct 2008 OOAPL 80
We can create classes and instances at all levels
Implementation: inheritance
Bird
Parrot: Bird
Tweety (Macaw)
Macaw: Parrot
InstancesClasses
Birdy (Bird)
Coco (Parrot)
![Page 77: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/77.jpg)
Oct 2008 OOAPL 81
Implementation: inheritanceInheritance: constructors with arguments
Using the animal kingdom as example.
Animal
Dog: Animal
Rex (Collie)Fish: Animal
Fido (Collie)
Big Dane: Dog
Collie: Dog
Instances
Classes
Great Dane: Dog
![Page 78: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/78.jpg)
Oct 2008 OOAPL 82
Implementation: inheritance
pet← NEW Collie ‘Rex’⎕pet. nl -2⎕
Name Nlegs Sounds Typepet.(Name Type)
Rex canis familiaris
![Page 79: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/79.jpg)
Oct 2008 OOAPL 83
Implementation: inheritance
pet← NEW Collie ‘Rex’⎕pet. nl -2⎕
Name Nlegs Sounds Typepet.(Name Type)
Rex canis familiaris
Let’s go over this again slowly…
![Page 80: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/80.jpg)
Oct 2008 OOAPL 84
Implementation: inheritance
pet← NEW Collie ‘Rex’⎕pet. nl -2⎕
Name Nlegs Sounds Typepet.(Name Type)
Rex canis familiaris
![Page 81: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/81.jpg)
Oct 2008 OOAPL 85
Implementation: Encapsulation
Conceals the exact details of how a particular class works from objects that use its code.
To allow access to a member there are various access level definitions.
![Page 82: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/82.jpg)
Oct 2008 OOAPL 86
To expose a member you must make it public
For a property or a method (function) you must use the :Access public Statement
For a field (var) you must use this statement::Field public MyField
Implementation: Encapsulation
![Page 83: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/83.jpg)
Oct 2008 OOAPL 87
The class to the right shows a few fields (vars) and their access.
The access is the same for methods (fns) and properties.
Implementation: Encapsulation
![Page 84: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/84.jpg)
Oct 2008 OOAPL 88
Shared vs instanceEach instance gets a copy of each
instance member.If a member is shared it is kept in
the class for all instances to see (and use)
Implementation: Encapsulation
![Page 85: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/85.jpg)
Oct 2008 OOAPL 89
Shared vs instance
Example: keepCountHere each instance has its own private
ID and public nameThe class keeps track of the number of
instances created privately.
Implementation: Encapsulation
![Page 86: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/86.jpg)
Oct 2008 OOAPL 90
Shared vs instance
keepCount:Count←0,1,…
MyID MyName
'Count' remainsin the class
CountMyID=1
MyName=XYZ1
CountMyID=2
MyName=XYZ2
Instance members are created in theinstance
Implementation: Encapsulation
CountMyID=3
MyName=XYZ3
![Page 87: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/87.jpg)
Oct 2008 OOAPL 91
Shared vs instance in1← new keepCount⎕
I am XYZ1 in2← new keepCount⎕I am XYZ2 in3← new keepCount⎕I am XYZ3 keepCount.Count3 keepCount. nl-2⎕ Count in2. nl-2⎕ Count MyName in1.Count3
Implementation: Encapsulation
![Page 88: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/88.jpg)
Oct 2008 OOAPL 92
In APL a function CANNOT have different definitions using a single name.
OTOH, a constructor MAY have several definitions.
Since APL is typeless the only way to tell which function to use is by the NUMBER of arguments, from 0 (niladic) to any number.
Implementation: Polymorphism
![Page 89: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/89.jpg)
:Class manyCtors ∇ general x ⍝ This ctor any arg ⍝ It can be anything :Implements constructor :Access public ∇ ∇ nil ⍝ This ctor takes no arg :Implements constructor :Access public ∇ ∇ mon1(a1) ⍝ This ctor takes 1 arg ⍝ It MUST be a vector :Implements constructor :Access public ∇ ∇ mon5(a1 a2 a3 a4 a5) ⍝ This ctor takes 5 arg ⍝ It MUST be exactly 5 :Implements constructor :Access public ∇:EndClass
Oct 2008 OOAPL 93
Implementation: Polymorphism
Example:
Depending on the number of arguments, the proper fn will be used.
![Page 90: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/90.jpg)
Oct 2008 OOAPL 94
Implementation summary
• Dyalog follows C# rules closely• )ED to edit classes• classes are much like namespaces• their members (vars & fns) can all be
accessed using public access• ⎕NEW makes an instance• classes can be based on another one• they use constructors to initialize them
![Page 91: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/91.jpg)
Oct 2008 OOAPL 95
End of implementation
There are MANY other things related to OO that have been implemented but are out of the scope of this presentation.
To find more visit Dyalog’s website at www.dyalog.com and grab the free documentation.
![Page 92: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/92.jpg)
Oct 2008 OOAPL 96
End of implementation
QUESTIONS
?
![Page 93: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/93.jpg)
Oct 2008 OOAPL 97
Exercises
Choice of exercises:1.Simple numbers2.Complex numbers3.Parser4.Pre formatted forms5.Graphical objects6.Telnet client The end
![Page 94: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/94.jpg)
Oct 2008 OOAPL 98
Exercises – Preformatted form
Deriving from Dyalog GUI classes.
Besides classes you can write classes derived from
- Forms- OLE servers/controls- .Net classes
![Page 95: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/95.jpg)
Oct 2008 OOAPL 99
Exercises – Preformatted form
Ex:f1← new ⎕ 'form' (('caption' 'zzz')
('size'(100 200)))XL← new ⎕ 'oleclient' (⊂'classname'
'Excel.application')⎕using←''present←System.DateTime.Now
![Page 96: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/96.jpg)
Oct 2008 OOAPL 100
Exercises – Preformatted form
We need to write a class that will create a form, just like
f1← new ⎕ 'form' (('caption' 'zzz')('size'(100 200)))
But with 2 buttons already setup for SAVE and QUIT so we can do
f1← new ⎕ myForm ((…))
![Page 97: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/97.jpg)
Oct 2008 OOAPL 101
Exercises – Preformatted form
![Page 98: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/98.jpg)
Oct 2008 OOAPL 102
Exercises – Preformatted form
f1← new Dialog(‘pref form' (100 500) )⎕ ⍬
![Page 99: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/99.jpg)
Oct 2008 OOAPL 103
Exercises – Preformatted form
This class creates an edit object:
![Page 100: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/100.jpg)
Oct 2008 OOAPL 104
Exercises – Preformatted form
f1← new Dialog('pref form' (200 300) )⎕ ⍬f1.fn←f1. new EditField ('First name:' '' (10 60) ( 100) )⎕ ⍬ ⍬f1.ln←f1. new EditField ('Last name:' '' (38 60) ( 100) )⎕ ⍬ ⍬f1.ad←f1. new EditField ('Address:' '' (66 60) (90 230) ( 'style' 'multi'))⎕ ⊂f1.(fn ln ad).Text←'Jeremy' 'Cricket'('TopFlower' 'last field')
![Page 101: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/101.jpg)
Oct 2008 OOAPL 105
Exercises
Improvements:- Use an interface
Back to exercise choices
![Page 102: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/102.jpg)
Oct 2008 OOAPL 106
Exercises – Complex numbersCreate a class to do complex math.
A rational or “normal number” is a decimal number that can be viewed on the line of numbers:
-10 -5 0 +5.3 +10
![Page 103: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/103.jpg)
Oct 2008 OOAPL 107
ExercisesA complex numberis a number in thecomplex plane:2 rational numbersare used torepresent it.
-4 -2 0 +2 +4 +6
+2
+4
+6
The number 3J4
![Page 104: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/104.jpg)
Oct 2008 OOAPL 108
Exercises
Create a class to do complex math.
The class will contain 2 real numbers and 3 methods to perform Add, Multiply and return the Reciprocal of a complex number.
![Page 105: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/105.jpg)
Oct 2008 OOAPL 109
Exercises
Create a class to do complex math.
The methods to perform Add and Multiply will be shared (in the class) methods and the Reciprocal will be an instance method.
![Page 106: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/106.jpg)
Oct 2008 OOAPL 110
ExercisesComplex math definition:
C = a + bi, where i = ¯1*0.5
Engineers use the J notation, like this:3j4 to denote the complex number with
a real value of 3 and an imaginary value of 4.
![Page 107: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/107.jpg)
Oct 2008 OOAPL 111
Exercises
Complex math definition:
Addition of 2 complex numbers
C1 + C2 = (a1+a2) + (b1+b2)i
![Page 108: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/108.jpg)
Oct 2008 OOAPL 112
Exercises
Complex math definition:Multiplication of 2 complex numbers C1 a1 b1i x C2 a2 b2i=(a1×a2) + (b1i × b2i) + (a1×b2i) +
(b1i×a2)=((a1×a2) - (b1 × b2)) + ((a1×b2) +
(b1×a2))i
![Page 109: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/109.jpg)
Oct 2008 OOAPL 113
Exercises
Complex math definition:Reciprocal of a complex number is 1÷C such that C × R = 1 = 1 + 0ireal = ((a1×a2) - (b1 × b2)) = 1img = ((a1×b2) + (b1×a2))i = 0Solving:Ra = Ca÷((Ca×Ca)-(Cb×Cb))Rb = -Cb÷((Ca×Ca)-(Cb×Cb))
![Page 110: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/110.jpg)
Oct 2008 OOAPL 114
Exercises
The first thing to do:)ED ○ complex
![Page 111: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/111.jpg)
Oct 2008 OOAPL 115
Exercises
Enter the fields:
![Page 112: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/112.jpg)
Oct 2008 OOAPL 116
ExercisesEnter the constructor, it takes 2
numbers as arguments, it merely sets the 2 fields:
![Page 113: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/113.jpg)
Oct 2008 OOAPL 117
ExercisesTest
c1← NEW complex (3,4)⎕c1.real
To ease creation of complex numbers:
j←{ new complex (⍺ ⍵)}⎕c2←5 j 12
c2.img
![Page 114: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/114.jpg)
Oct 2008 OOAPL 118
ExercisesTest
Typing c1 does not provide useful information.
It would be nice if we could find what the numbers are without having to use
c1.(real img)
![Page 115: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/115.jpg)
Oct 2008 OOAPL 119
Display form
• The display form can be improved• We can use ⎕DF to show a
different string, e.g. 3J4• Try c1. DF '3J4'⎕ (or whatever)• Try including the setting in the
constructor
![Page 116: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/116.jpg)
Oct 2008 OOAPL 120
Display form
• assignment does not change the display
Try c1.img←22 and verify that ←c1⎕ has the same display form
• use properties to change that• create 2 properties• use DF to change the display in the ⎕
<set> function
![Page 117: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/117.jpg)
Oct 2008 OOAPL 121
Exercises
Enter the methods, first, <plus>:
![Page 118: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/118.jpg)
Oct 2008 OOAPL 122
Exercises
Test <plus>: cs←c1 complex.plus c2 cs.real ?
![Page 119: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/119.jpg)
Oct 2008 OOAPL 123
Exercises
Enter the methods, 2nd, <times>:
![Page 120: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/120.jpg)
Oct 2008 OOAPL 124
Exercises
Test <times>: ct←c1 complex.times c2 ct.real ?
![Page 121: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/121.jpg)
Oct 2008 OOAPL 125
Exercises
Enter the methods, 3rd, <reciprocal>:
![Page 122: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/122.jpg)
Oct 2008 OOAPL 126
Exercises
Try it!complex.plus/4⍴c1 if funny display, ⍝
use dj←{⍵.(real img)}dj complex.plus/4⍴c1 12 16?⍝dj complex.times\3⍴c1 3 4 ¯7 24...⍝dj complex.plus/c1 complex.times¨4⍴c1
![Page 123: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/123.jpg)
Oct 2008 OOAPL 127
Exercises
Try it!dj c1.reciprocal
⍝ c1 ÷ c1 or c1 × ÷c1:dj c1 complex.times c1.reciprocaldj c2 complex.times c1.reciprocal2.52 0.64?
![Page 124: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/124.jpg)
Oct 2008 OOAPL 128
Exercises
Improvements:- other functions (magnitude?)- accept a single (real) number
Back to exercise choices
![Page 125: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/125.jpg)
Oct 2008 OOAPL 129
Exercises
Create a class to do simple math on 2 integers (as in complex numbers).
i.e.: Real & Imaginary
![Page 126: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/126.jpg)
Oct 2008 OOAPL 130
Exercises
Create a class to do simple math.
The class will contain 2 real numbers and 3 methods to perform Add, Multiply and return the Reciprocal of a pair of simple numbers.
![Page 127: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/127.jpg)
Oct 2008 OOAPL 131
Exercises
Create a class to do simple math.
The methods to perform Add and Multiply will be shared (in the class) methods and the Reciprocal will be an instance method.
![Page 128: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/128.jpg)
Oct 2008 OOAPL 132
ExercisesSimple math definition:- The 1st number will be called RR- The 2nd number will be called II
They will be stored in a vector (2 elem)There will be two properties to access
them individually.
![Page 129: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/129.jpg)
Oct 2008 OOAPL 133
ExercisesSimple math definition:Addition of 2 simple numbersS1 + S2 = (r1+r2) , (i1+i2)Multiplication of 2 simple numbersS1 x S2 = (r1xr2) , (i1xi2)Reciprocal of a simple number÷S1 = (÷r2) , (÷i2)
![Page 130: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/130.jpg)
Oct 2008 OOAPL 134
Exercises
The first thing to do:)ED ○ simple
![Page 131: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/131.jpg)
Oct 2008 OOAPL 135
Exercises
Enter the field:
![Page 132: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/132.jpg)
Oct 2008 OOAPL 136
ExercisesEnter the constructor, it takes 2
numbers as arguments, it merely sets the field:
![Page 133: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/133.jpg)
Oct 2008 OOAPL 137
ExercisesAt this point the class does not do
anything.‘Numbers’ is private and cannot be
accessed from outside.Let’s create properties to access it.
![Page 134: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/134.jpg)
Oct 2008 OOAPL 138
ExercisesEnter the properties, they take 1
number to set a value in the field:
![Page 135: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/135.jpg)
Oct 2008 OOAPL 139
ExercisesTest
s1← NEW simple(3,4)⎕s1.R
To ease creation of simple numbers:
s←{ new simple (⍺ ⍵)}⎕s2←5 s 12
s2.R
![Page 136: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/136.jpg)
Now enter the second property…
Oct 2008 OOAPL 140
Exercises
![Page 137: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/137.jpg)
Oct 2008 OOAPL 141
ExercisesTest
Typing s1 does not provide useful information.
It would be nice if we could find what the numbers are without having to use
s1.(R I)
![Page 138: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/138.jpg)
Oct 2008 OOAPL 142
Display form
• The display form can be improved• We can use ⎕DF to show a
different string, e.g. 3S4• Try s1. DF '3S4'⎕ (or whatever)• Try including the setting in the
constructor
![Page 139: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/139.jpg)
Oct 2008 OOAPL 143
Display form
• assignment does not change the display
Try s1.I←22 and verify that ←s1⎕ has the same display form it had before
• use the properties’ code to change that
• use DF to change the display in the ⎕<set> function
![Page 140: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/140.jpg)
Oct 2008 OOAPL 144
Exercises
Enter the methods, first, <plus>:
![Page 141: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/141.jpg)
Oct 2008 OOAPL 145
Exercises
Test <plus>: cs←s1 simple.plus s2 cs.R ?
![Page 142: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/142.jpg)
Oct 2008 OOAPL 146
Exercises
Enter the methods, 2nd, <times>:
![Page 143: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/143.jpg)
Oct 2008 OOAPL 147
Exercises
Test <times>: ct←s1 simple.times s2 ct.R ?
![Page 144: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/144.jpg)
Oct 2008 OOAPL 148
Exercises
Enter the methods, 3rd, <reciprocal>:
![Page 145: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/145.jpg)
Oct 2008 OOAPL 149
Exercises
Try it!simple.plus/4⍴s1 if funny display, ⍝
use dj←{⍵.(R I)}dj simple.plus/4⍴s1 12 S 88?⍝dj simple.times\3⍴s1 3S22 ⍝
9S484…dj simple.plus/s1 simple.times¨4⍴s1
![Page 146: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/146.jpg)
Oct 2008 OOAPL 150
Exercises
Try it!dj s1.reciprocal
⍝ s1 ÷ s1 or s1 × ÷s1:dj s1 simple.times s1.reciprocaldj s2 simple.times s1.reciprocal1.67 0.54?
![Page 147: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/147.jpg)
Oct 2008 OOAPL 151
Exercises
Improvements:- other functions (magnitude?)- accept a single (real) number- make this into a rational number
class
Back to exercise choices
![Page 148: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/148.jpg)
Oct 2008 OOAPL 152
There are many advantages to using OO languages over procedural languages:
• ease of modification• reduced maintenance costs• easier to model• can speed up development time• etc.
Conclusion
![Page 149: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/149.jpg)
Oct 2008 OOAPL 153
OO languages make abstraction easyThey encourage architectures with
elaborate layers. They can be good when the problem
domain is truly complex and demands a lot of abstraction.
Conclusion
![Page 150: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/150.jpg)
Oct 2008 OOAPL 154
• All OO languages show some tendency to suck programmers into the trap of excessive layering
• Object frameworks and object browsers are not a substitute for good design or documentation
Careful!
![Page 151: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/151.jpg)
Oct 2008 OOAPL 155
• Too many layers destroy transparency: It becomes too difficult to see down through them and mentally model what the code is actually doing.
• The Rules of Simplicity, Clarity, and Transparency can get violated wholesale, and the result is code full of obscure bugs and continuing maintenance problems.
Careful!
![Page 152: Object Oriented Programming in APL A New Direction Dan Baronet 2008 V1.20.](https://reader035.fdocuments.net/reader035/viewer/2022062417/551aac66550346856e8b4bdf/html5/thumbnails/152.jpg)
Oct 2008 OOAPL 156
Buyer beware!
Careful!