1 / 23

ITEC 320

ITEC 320. Lecture 9 Nested records / Packages. Review. Project ?’s Records Exam 1 n ext Friday. Outline. Nested records. Design exercise. How do we represent a line mathematically? How do we represent one in Ada?. Code. type Pair is record x : Integer; y : Integer ;

fuller
Download Presentation

ITEC 320

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ITEC 320 Lecture 9 Nested records / Packages

  2. Review • Project ?’s • Records • Exam 1 next Friday

  3. Outline • Nested records

  4. Design exercise • How do we represent a line mathematically? • How do we represent one in Ada?

  5. Code type Pair is record x: Integer; y: Integer; end record; type Line is record start: Pair; end: Pair; end record; myLine: Line; begin myLine.start.x:= 1; myLine.start.y:= 2; myLine.end:= (3, 4); put(myLine.start.x); put(myLine.end.x);

  6. Java/Ada • Nested records • How is it implemented in Java? • How is it implemented in Ada?

  7. UML • Composition • Is a part of • Aggregation • Is contained in University Department Faculty Example

  8. Arrays • What does an array of records like Line mean in terms of • Memory allocation • Syntax

  9. Real world example • Points • Lines • Line collection / displayer • Images • Grid • World loader

  10. Packages • Records are one way of grouping data • Packages are one way of grouping functions and procedures

  11. Which one is Java? Which one is Ada? 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;

  12. 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

  13. Java class Pair { intx, y; intdistanceToOrigin() // 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()); } }

  14. Ada • 2 pieces • Record for a pair • Function to calculate the distance to the origin • File structure • Specification • Body

  15. Store in a .ads file Specification • Tells the compiler what the package does, but not how to do it package PairPkg is type Pair is record x, y: Integer; end record function distanceToOrigin(p: Pair) return Integer; end PairPkg;

  16. 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;

  17. 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?

  18. Rules • The specification must be followed to the letter • All functions / procedures must be implemented • All return / parameter types must match

  19. 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;

  20. Store in a .ads file Specification • Tells the compiler what the package does, but not how to do it package PairPkg is type Pair is private; function distanceToOrigin(p: Pair) return Integer; private type Pair is record x, y: Integer; end record; end PairPkg;

  21. 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. 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…

  23. Review • Nested records • Intro to packages

More Related