Programming Languages by Ravi Sethi Chapter 6: Groupings of Data and Operations - PowerPoint PPT Presentation

About This Presentation
Title:

Programming Languages by Ravi Sethi Chapter 6: Groupings of Data and Operations

Description:

In general the behavior of a construct is what is observable from outside the construct ... lparen number512 minus number487 rparen times number2 semicolon. Modules ... – PowerPoint PPT presentation

Number of Views:1276
Avg rating:3.0/5.0
Slides: 40
Provided by: zag
Learn more at: http://www.cs.bsu.edu
Category:

less

Transcript and Presenter's Notes

Title: Programming Languages by Ravi Sethi Chapter 6: Groupings of Data and Operations


1
Programming Languages byRavi SethiChapter 6
Groupings of Data and Operations
2
Constructs for Program Structuring
  • The programming with
  • Procedures
  • Modules
  • Classes

3
Procedures
  • Raising the level of a Computation
  • Program design with Procedures
  • Behavior
  • Implementation

4
  • Behavior
  • In general the behavior of a construct is what is
    observable from outside the construct
  • Define procedure corresponding to what an
    algorithm does
  • Implementation
  • The part that is accessible only from within that
    construct
  • Hide the details of an algorithm in the procedure
    body

5
Example
  • The evaluation of expression
  • (512 - 487) 2
  • It can be partitioned into
  • Scanning or Lexical analysis groups individual
    characters into tokens
  • Parsing or Syntax analysis uses the syntactic
    structure of the expression to determine its
    value.

6
CHARACTER STREAM
(512 - 487) 2
Scanner
TOKEN STREAM
lparen number512 minus number487 rparen times
number2 semicolon
Parser
EXPRESSION VALUE
50
7
Modules
  • A module is a collection of declarations,
    including both variables and procedures
  • A module serves as a black box with which the
    rest of the program interacts through an
    interface
  • Program design with Module
  • Role
  • Interface
  • Implementation

8
  • Role
  • Modules are usually organized around data.
  • If an operation affects some data, then the
    operation and the data may belong together in a
    module
  • Interface
  • A subset of the declaration in the module
  • Contain types, variables, and procedures
  • The procedures in the interface determine the
    behavior of the module

9
  • Implementation
  • Consist of everything else about the module,
    including the code for procedures and for
    initialization
  • Hide design decision in the private part of a
    module

10
Figure 6.2 Public and private view of two modules
11
Classes User-defined data type
  • Design types corresponding to what the program
    manipulates
  • A term class is an abbreviation of class of
    objects
  • An object is a run-time entity with data on which
    operations can be performed

12
Comparison of Procedures, Modules and Classes
  • Serve distinct needs
  • can be used in combination with each other
  • procedures - needed to implement operations in a
    module or class
  • module - used to statically partition the source
    text of program with classes
  • differences in not in activity (the
    procedures)but in the organization

13
Procedures
  • Define all the details
  • all the representation is known throughout the
    program
  • entries are represented as a pointer to a record
    containing the data

14
Modules
  • Hide the representation
  • provide public operations
  • advantage over procedures is that the
    representation is hidden and access is checked
  • hiding and checking contribute to feel of entries
    as object rather than pointers

15
Defined Types
  • As with modules, the representation is hidden,
    access is checked
  • in addition, objects are initialized upon creation

16
Program Organization
  • Procedures at the same level
  • a sequence of useful procedures
  • procedures can call each other

Figure 6.6
17
  • Nested procedures
  • An attempt to manage programs with many
    procedures
  • The idea is to declare a procedure inside another
  • To declare functions close to where they are used

Figure 6.7
18
  • Modules
  • a collection of data and related actions
  • a grouping of declarations, which can include
    types, variables, and procedures

Figure 6.8
19
CHAPTER 6 PART II
  • 6.5 CLASS DECLARATIONS IN C
  • 6.6 DYANAMIC ALLOCATION IN C
  • 6.7 TEMPLATES PARAMETERIZED TYPES
  • 6.8 IMPLEMENTATION OF OBJECTS IN C

20
6.5 CLASS DECLARATIONS IN C
  • C User-defined types receive the same support
    as built-in types.
  • Classes generalization of records called
    structures (grouping of data).
  • Both data and functions can be structure members.
  • Variables can be declared and objects created in
    C classes.

21
STRUCTURE OR CLASS
  • Structure vs. Class Public vs. Private
  • All members of a structure are public.
  • All members of a class are private.
  • Take note These are by default!!!!
  • A structure is a special case of a class of the
    same name.

22
DECLARATION
  • Keyword struct
  • Declarations enclosed in braces .
  • Declarations in braces are members.

23
SAMPLE CODE
  • struct Stack
  • int top
  • char elements101
  • char pop( )
  • void push (char)
  • Stack ( )
  • 2 variables
  • top- data member that holds an integer
  • elements- data member that holds an array of
    characters
  • 3 functions
  • pop- takes no parameter and returns a character
  • push- takes character and returns nothing
  • Stack- constructor

24
Constructors Destructors
  • Stack ( )
  • ..
  • Stack ( )
  • Constructors and destructors are parameterless
    functions.
  • Same name as class.
  • Called automatically
  • constructors initialize
  • destructors clean up

25
MEMBER NAMES AND FUNCTION CODE
  • struct Stack
  • int top
  • char elements101
  • char pop( )
  • void push (char)
  • Stack ( ) top 0
  • char Stackpop ( )
  • top top - 1
  • return elementstop1
  • void Stackpush (char c)
  • top top 1
  • elementstop c
  • Full member name ltclass-namegtltmember namegt
  • full names needed to make explicit that belong to
    class if used outside of class declaration
  • If class name is known from context, use only the
    member name.

26
CLASS NAMES AS DEFINED TYPES
  • include ltstdio.hgt
  • main( )
  • Stack s
  • s.push(!) s.push(_at_) s.push()
  • printf(c c c\n, s.pop( ), s.pop( ), s.pop(
    ))
  • After declared, a class name can be used to
    declare variables.
  • Dot notation refers to members of an object.
  • C struct Complex x
  • C Complex x

27
INITIALIZATION WITH PARAMETERS
  • struct Complex
  • float re
  • float im
  • Complex(float r, i) re r im i
  • ..
  • Complex x(1, 2)
  • Initialization of constructor may require passing
    of parameters.
  • Here declaration takes 2 parameters.
  • Declares and initializes complex x to the
    parameters in ( ).

28
OVERLOADED FUNCTION NAMES
  • struct Complex
  • float re
  • float im
  • Complex(float r)
  • re r im 0
  • Complex(float r, i) re r im i
  • Functions can be overloaded (including
    constructors).
  • Must differ by number and/or type of parameters
    in call.

29
ACCESSIBITLITY PUBLIC, PRIVATE, PROTECTED
  • Privacy and access class based.
  • Access to members restricted through keywords
    (apply to outside class in class have access to
    all objects in same class).
  • Public members are accessible to outside code.
  • Private members are accessible to member
    functions in the class declaration. Accessible
    to all objects of class.
  • Protected members like private members except for
    derived classes, visible through inheritance to
    derived classes.

30
PUBLIC vs. PRIVATE
  • Class Stack
  • public
  • Stack ( )
  • char pop( )
  • void push(char)
  • private
  • int top
  • char elements101
  • Here the member variables are hidden (private).
  • By default
  • struct public
  • class private

31
6.6 DYNAMIC ALLOCATION IN C
  • Three ways to create objects in C
  • variable declarations
  • dynamically through new
  • as static objects

32
NEW, DELETE
  • new T
  • delete p
  • Objects created by new exist until destroyed by
    delete.
  • New creates object of type T and returns pointer.
  • Delete destroys object pointed to.

33
POINTERS TO OBJECTS
  • Prefix is a pointer-deferencing operator.
  • Cell p reads as we get an object of type
    cell when we apply to p.
  • Summary of pointer notations
  • p-gtinfo member info of object pointed to by
    p.
  • 0 null pointer, pointing to no object.
  • this used within member functions to point to
    this object itself.

34
DYNAMIC ALLOCATION USING CONSTRUCTORS AND
DESTRUCTORS
  • Class Stack
  • int top
  • char elements
  • int size
  • public
  • void push(char)
  • char pop( )
  • Stack (int)
  • Stack( )
  • Here the size of the array is a parameter.
  • Since dynamically allocated storage is taken off
    the heap it needs a destructor to explicitly
    deallocate (release) it.

35
CELLS AND LINKED LISTS
  • class Cell
  • int info
  • Cell next
  • Cell(int I) info I next this
  • Cell(int I, Celln) info I next n
  • friend class List
  • Friends
  • friend declaration within a class gives nonmember
    functions access to private members of the class
  • Cell constructors
  • empty list is a cell that points to itself
  • new Cell c(0) or
  • next this

36
LINKED LISTS
  • class List
  • Cell rear
  • public
  • void put(int)
  • void push(int)
  • int pop( )
  • int empty( ) return rear rear-gtnext
  • List( ) rear new Cell(0)
  • List( ) while(!empty( )) pop( )
  • Uses constructors from class Cell (because of
    friend declaration)
  • Initializes new list (circularly linked cell)
  • push adds to front
  • put adds to back
  • pop returns value of front and deletes cell

37
6.7 TEMPLATES PARAMETERIZED TYPES
  • Data structures are containers that hold objects.
  • Operations on a container can be defined for any
    type.
  • Type parameters denote the type of element in the
    container.
  • Template ltclass Tgt

38
6.8 IMPLEMENTATION OF OBJECTS IN C
  • Objects laid out like records. (class structure
    containing data members)
  • Pointers used to access indirectly.
  • Functions can be expanded in-line to reduce
    function call overhead.
  • Class declaration assists with checking
    restrictions and in-line expansion at compile
    time.

39
Take you C assignment and translate it directly
into C using BIN objects. See page 246 in PL
book for stack objectexample. Due 10/12/2000
Write a Comment
User Comments (0)
About PowerShow.com