Download presentation
Presentation is loading. Please wait.
Published byJudith Lee Modified over 9 years ago
1
ITEC 320 Lecture 16 Packages (1)
2
Review Questions? –HW –Exam Nested records –Benefits –Downsides
3
Packages(1) Objectives Packages –OO in Ada
4
Packages(1) Definitions Client –Uses the class and its methods –Routine or package that uses the types and routines defined in package P Examples –With ada.text_io; use ada.text_io; Which one is Java? Which one is Ada?
5
Packages(1) Ada “Classes” Records store information Procedures work with records / other data Put the two together and you have the Ada version of classes Contain –Procedures –Types
6
Packages(1) Java class Pair { int x, y; int distanceToOrigin() // How far to origin { return Math.abs(x) + Math.abs(y); } } // Client for class Pair class PairClient { public static void main(String[] args) { Pair p; p = new Pair(); p.x = 1; p.y = 2; Sop(p.distanceToOrigin()); }
7
Packages(1) Ada 2 pieces –Record for a pair –Function to calculate the distance to the origin File structure –Specification –Body
8
Packages(1) Specificatio n Tells the compiler what the package does, but not how to do it Store in a.ads file package PairPkg is type Pair is record x, y: Integer; end record function distanceToOrigin(p: Pair) return Integer; end PairPkg;
9
Packages(1) Body Contains the code for a certain package’s procedures / functions package body PairPkg is function distanceToOrigin(p: Pair) return Integer is begin return abs p.x + abs p.y; end distanceToOrigin; end PairPkg;
10
Packages(1) Ada / Java Java classes (1 file) Ada method (2 files) What are the benefits / downsides of each approach? How does Java sort of provide the same idea that Ada does?
11
Packages(1) Rules The specification must be followed to the letter All functions / procedures must be implemented All return / parameter types must match
12
Packages(1) Use Without the use statement, you have to fully-qualify the package name with pairpkg; procedure pairclient is p: pairpkg.Pair; begin p.x := 1; p.y := 2; put(pairpkg.distanceToOrigin(p)); end pairclient;
13
Packages(1) Specificatio n Tells the compiler what the package does, but not how to do it Store in a.ads file package PairPkg is type Pair is record x, y: Integer; end record function distanceToOrigin(p: Pair) return Integer; end PairPkg;
14
Packages(1) Body Contains the code for a certain package’s procedures / functions package body PairPkg is function distanceToOrigin(p: Pair) return Integer is begin return abs p.x + abs p.y; end distanceToOrigin; end PairPkg;
15
Packages(1) Compilation Rule of thumb –Keep it all in the same directory –Some way of pointing where to look for specifications / bodies Compiler does the work for you –Automatically pulls in packages thanks to the with statement Take a look at the files produced and think about why they are there…
16
Packages(1) Privacy Java has private variables Why ? What do they provide? How are they used?
17
Packages(1) Ada package PairPkg is -- Public section of package type Pair is private; -- Only type name is public function newPair(x, y: Integer) return Pair; function distanceToOrigin(p: Pair) return Integer; -- Private section of package private -- Code below is NOT visible to client type Pair is record -- Type implementation is private x, y: Integer; end record end PairPkg; What can you do with the
18
Packages(1) Package package body PairPkg is function newPair(x, y: Integer) return Pair is temp: Pair := (x, y); begin return temp; end newPair; function distanceToOrigin(p: Pair) return Integer is begin return p.x + p.y; end distanceToOrigin; end PairPkg; What does this look like?
19
Packages(1) Client with ada.integer_text_io; use ada.integer_text_io; with pairpkg; use pairpkg; procedure pairclient is p: Pair; begin p := newPair(1, 2); put(distanceToOrigin(p)); p.x := 3; -- Syntax error end pairclient;
20
Packages(1) Specificatio n Tells the compiler what the package does, but not how to do it Store in a.ads file package PairPkg is type Pair is record x, y: Integer; end record function distanceToOrigin(p: Pair) return Integer; end PairPkg;
21
Packages(1) Body Contains the code for a certain package’s procedures / functions package body PairPkg is function distanceToOrigin(p: Pair) return Integer is begin return abs p.x + abs p.y; end distanceToOrigin; end PairPkg;
22
Packages(1) Summary Packages in Ada –Specifications –Body
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.