Basic Types & User Defined Types

Total Page:16

File Type:pdf, Size:1020Kb

Basic Types & User Defined Types Basic Types & User Defined Types 1. Objectives ..................................................................................... 2 2. Built-in Types and Primitive Types........................................... 2 3. Data Aggregates and Type Constructors .................................. 3 4. Constructors ................................................................................. 3 5. User-defined Types and Abstract Data Types .......................... 7 A. Bellaachia Page: 1 1. Objectives How to structure your data? How to organization your data? How to use primitive types to build user-defined types? How types are implemented? 2. Built-in Types and Primitive Types What is a type? . Values . Operations A primitive type mimics hardware units. We call primitive types those types that are not built from other types. Example: . Character is a primitive type in C, but String is not. Boolean is not a primitive type in C while it is in Java. Examples: . Booleans . Integers . Reals . Characters Benefits: . Hides underlying representation A. Bellaachia Page: 2 . Can do type checking at compile time . Can resolve overloaded functions at compile time . Programmer can specify the accuracy required 3. Data Aggregates and Type Constructors Definition: . An aggregate data type, also called compound object, consists of one or more data type objects. Example: o Arrays: consists of one or more elements of a single data type placed in contiguous locations from first to last. Constructors: . It is the method used to create an aggregate data type. Examples: o Cartesian Products o Sequences o Etc. 4. Constructors Cartesian Product: . A constructor used to create records and structures . Definition: Cartesian product of n sets A1, A2, A3, …, An is a set whose elements are ordered n-tuples (a1, a2, a3, …, an), where each ak belongs to Ak for 1kn. Example: A. Bellaachia Page: 3 o Structure in C o Records in Pascal and Ada. o A C example: #include <stdio.h> typedef struct { char name[30]; int age; char ssn[10]; } person; main (){ person myName = {"Bell", 20, "222222222"}; printf("Person Info: \n"); printf("\t\t%s\n\t\t%d\n\t\t%s\n", myName.name,myName.age, myName.ssn); } Mapping . Definition: o A mapping is a function from a set of values (domain) to a set of values (range): F: integer -> real . Array Constructor: is a mapping from a set of integers (index) to a set of values (content of the array). A. Bellaachia Page: 4 . Example: o Int myArray[5] ={-2,0,-3,4,300}; MyArray: 0 -2 MyArray: 1 0 MyArray: 2 -3 MyArray: 3 4 MyArray: 4 300 . Another Example: enum Colors {red, white, black, green, blue}; The compiler assigns an integer number to each name in the enumerated type starting from zero. Union and Discriminated Union . Union is a constructor that allows objects to be specified by a disjunctive of fields, e.g., field1 or field2 or ... or fieldn. An instance object has only one field: Save space. It is up to the programmer to remember which address is valid . Example: o Variant records in Pascal o Union structures in C: union mixed { int i; A. Bellaachia Page: 5 float f; char c; }; union mixed m; m.i = 10; Powerset: . Powerset(T): This is a constructor that creates a variable whose value is a set of elements of type T. T is called the base type. Example: o set type in Pascal o Java APIs: Sets. Sequence: . Sequences constructor allows the creation of objects whose number of elements is not specified. Objects will have arbitrary size. Example: sequential files, Vector, List in Java. Recursion . Recursion is a constructor that allows the size of an object to grow dynamically (add or delete elements). Example: Create the structure of a Linked List in C” typedef strcut { A. Bellaachia Page: 6 DoulyLinkedList * previous; Char name[30]; DoulyLinkedList * next; } doublyLinkedList; doublyLinkedList *head; 5. User-defined Types and Abstract Data Types The ability to create new data types using primitive data types. Example: typedef struct { int numerator; int denominator; } fraction; Define variables of type fraction: fraction f1, f2; Abstract Data Type (ADT) . It is an extension to the record or structure construct: Plus routines . C++/Java: ADT is a class construct. Constructor: It allocates and initializes the fields of an ADT. Languages usually provides a default constructor and default initializations. A. Bellaachia Page: 7 . Deconstructor: o It releases the memory allocated for an instance. o C++: a deconstructor has the name of the class prefixed by ‘~’ o Java: provide a garbage collector to clean memory allocated by an object. Example: C++ class fraction{ public: fraction (int i, int j){ numerator = i; denominator = j; } fraction (){ numerator = 0; denominator = 0; } fraction mul (fraction f1, fraction f2){ fraction f(0,0); f.numerator = f1.numerator * f1.numerator; f.denominator = f1.denominator * f1.denominator; return (f); } print (){ cout << numerator/denominator; } private: int numerator; int denominator; } A. Bellaachia Page: 8 Generic ADT: . An ADT that takes data types as parameters. C++ : template. Example: (www.cpluplus.com) // Create a template function that returns the // greater one of two objects we could use: #include <iostream.h> template <class T> T GetMax (T a, T b) { T result; result = (a>b)? a : b; return (result); } int main () { int i=5, j=6, k; long l=10, m=5, n; k=GetMax<int>(i,j); n=GetMax<long>(l,m); cout << k << endl; cout << n << endl; return 0; } A. Bellaachia Page: 9 .
Recommended publications
  • Encapsulation and Data Abstraction
    Data abstraction l Data abstraction is the main organizing principle for building complex software systems l Without data abstraction, computing technology would stop dead in its tracks l We will study what data abstraction is and how it is supported by the programming language l The first step toward data abstraction is called encapsulation l Data abstraction is supported by language concepts such as higher-order programming, static scoping, and explicit state Encapsulation l The first step toward data abstraction, which is the basic organizing principle for large programs, is encapsulation l Assume your television set is not enclosed in a box l All the interior circuitry is exposed to the outside l It’s lighter and takes up less space, so it’s good, right? NO! l It’s dangerous for you: if you touch the circuitry, you can get an electric shock l It’s bad for the television set: if you spill a cup of coffee inside it, you can provoke a short-circuit l If you like electronics, you may be tempted to tweak the insides, to “improve” the television’s performance l So it can be a good idea to put the television in an enclosing box l A box that protects the television against damage and that only authorizes proper interaction (on/off, channel selection, volume) Encapsulation in a program l Assume your program uses a stack with the following implementation: fun {NewStack} nil end fun {Push S X} X|S end fun {Pop S X} X=S.1 S.2 end fun {IsEmpty S} S==nil end l This implementation is not encapsulated! l It has the same problems as a television set
    [Show full text]
  • 9. Abstract Data Types
    COMPUTER SCIENCE COMPUTER SCIENCE SEDGEWICK/WAYNE SEDGEWICK/WAYNE 9. Abstract Data Types •Overview 9. Abstract Data Types •Color •Image processing •String processing Section 3.1 http://introcs.cs.princeton.edu http://introcs.cs.princeton.edu Abstract data types Object-oriented programming (OOP) A data type is a set of values and a set of operations on those values. Object-oriented programming (OOP). • Create your own data types (sets of values and ops on them). An object holds a data type value. Primitive types • Use them in your programs (manipulate objects). Variable names refer to objects. • values immediately map to machine representations data type set of values examples of operations • operations immediately map to Color three 8-bit integers get red component, brighten machine instructions. Picture 2D array of colors get/set color of pixel (i, j) String sequence of characters length, substring, compare We want to write programs that process other types of data. • Colors, pictures, strings, An abstract data type is a data type whose representation is hidden from the user. • Complex numbers, vectors, matrices, • ... Impact: We can use ADTs without knowing implementation details. • This lecture: how to write client programs for several useful ADTs • Next lecture: how to implement your own ADTs An abstract data type is a data type whose representation is hidden from the user. 3 4 Sound Strings We have already been using ADTs! We have already been using ADTs! A String is a sequence of Unicode characters. defined in terms of its ADT values (typical) Java's String ADT allows us to write Java programs that manipulate strings.
    [Show full text]
  • Abstract Data Types
    Chapter 2 Abstract Data Types The second idea at the core of computer science, along with algorithms, is data. In a modern computer, data consists fundamentally of binary bits, but meaningful data is organized into primitive data types such as integer, real, and boolean and into more complex data structures such as arrays and binary trees. These data types and data structures always come along with associated operations that can be done on the data. For example, the 32-bit int data type is defined both by the fact that a value of type int consists of 32 binary bits but also by the fact that two int values can be added, subtracted, multiplied, compared, and so on. An array is defined both by the fact that it is a sequence of data items of the same basic type, but also by the fact that it is possible to directly access each of the positions in the list based on its numerical index. So the idea of a data type includes a specification of the possible values of that type together with the operations that can be performed on those values. An algorithm is an abstract idea, and a program is an implementation of an algorithm. Similarly, it is useful to be able to work with the abstract idea behind a data type or data structure, without getting bogged down in the implementation details. The abstraction in this case is called an \abstract data type." An abstract data type specifies the values of the type, but not how those values are represented as collections of bits, and it specifies operations on those values in terms of their inputs, outputs, and effects rather than as particular algorithms or program code.
    [Show full text]
  • 5. Data Types
    IEEE FOR THE FUNCTIONAL VERIFICATION LANGUAGE e Std 1647-2011 5. Data types The e language has a number of predefined data types, including the integer and Boolean scalar types common to most programming languages. In addition, new scalar data types (enumerated types) that are appropriate for programming, modeling hardware, and interfacing with hardware simulators can be created. The e language also provides a powerful mechanism for defining OO hierarchical data structures (structs) and ordered collections of elements of the same type (lists). The following subclauses provide a basic explanation of e data types. 5.1 e data types Most e expressions have an explicit data type, as follows: — Scalar types — Scalar subtypes — Enumerated scalar types — Casting of enumerated types in comparisons — Struct types — Struct subtypes — Referencing fields in when constructs — List types — The set type — The string type — The real type — The external_pointer type — The “untyped” pseudo type Certain expressions, such as HDL objects, have no explicit data type. See 5.2 for information on how these expressions are handled. 5.1.1 Scalar types Scalar types in e are one of the following: numeric, Boolean, or enumerated. Table 17 shows the predefined numeric and Boolean types. Both signed and unsigned integers can be of any size and, thus, of any range. See 5.1.2 for information on how to specify the size and range of a scalar field or variable explicitly. See also Clause 4. 5.1.2 Scalar subtypes A scalar subtype can be named and created by using a scalar modifier to specify the range or bit width of a scalar type.
    [Show full text]
  • Abstract Data Types (Adts)
    Data abstraction: Abstract Data Types (ADTs) CSE 331 University of Washington Michael Ernst Outline 1. What is an abstract data type (ADT)? 2. How to specify an ADT – immutable – mutable 3. The ADT design methodology Procedural and data abstraction Recall procedural abstraction Abstracts from the details of procedures A specification mechanism Reasoning connects implementation to specification Data abstraction (Abstract Data Type, or ADT): Abstracts from the details of data representation A specification mechanism + a way of thinking about programs and designs Next lecture: ADT implementations Representation invariants (RI), abstraction functions (AF) Why we need Abstract Data Types Organizing and manipulating data is pervasive Inventing and describing algorithms is rare Start your design by designing data structures Write code to access and manipulate data Potential problems with choosing a data structure: Decisions about data structures are made too early Duplication of effort in creating derived data Very hard to change key data structures An ADT is a set of operations ADT abstracts from the organization to meaning of data ADT abstracts from structure to use Representation does not matter; this choice is irrelevant: class RightTriangle { class RightTriangle { float base, altitude; float base, hypot, angle; } } Instead, think of a type as a set of operations create, getBase, getAltitude, getBottomAngle, ... Force clients (users) to call operations to access data Are these classes the same or different? class Point { class Point { public float x; public float r; public float y; public float theta; }} Different: can't replace one with the other Same: both classes implement the concept "2-d point" Goal of ADT methodology is to express the sameness Clients depend only on the concept "2-d point" Good because: Delay decisions Fix bugs Change algorithms (e.g., performance optimizations) Concept of 2-d point, as an ADT class Point { // A 2-d point exists somewhere in the plane, ..
    [Show full text]
  • Csci 658-01: Software Language Engineering Python 3 Reflexive
    CSci 658-01: Software Language Engineering Python 3 Reflexive Metaprogramming Chapter 3 H. Conrad Cunningham 4 May 2018 Contents 3 Decorators and Metaclasses 2 3.1 Basic Function-Level Debugging . .2 3.1.1 Motivating example . .2 3.1.2 Abstraction Principle, staying DRY . .3 3.1.3 Function decorators . .3 3.1.4 Constructing a debug decorator . .4 3.1.5 Using the debug decorator . .6 3.1.6 Case study review . .7 3.1.7 Variations . .7 3.1.7.1 Logging . .7 3.1.7.2 Optional disable . .8 3.2 Extended Function-Level Debugging . .8 3.2.1 Motivating example . .8 3.2.2 Decorators with arguments . .9 3.2.3 Prefix decorator . .9 3.2.4 Reformulated prefix decorator . 10 3.3 Class-Level Debugging . 12 3.3.1 Motivating example . 12 3.3.2 Class-level debugger . 12 3.3.3 Variation: Attribute access debugging . 14 3.4 Class Hierarchy Debugging . 16 3.4.1 Motivating example . 16 3.4.2 Review of objects and types . 17 3.4.3 Class definition process . 18 3.4.4 Changing the metaclass . 20 3.4.5 Debugging using a metaclass . 21 3.4.6 Why metaclasses? . 22 3.5 Chapter Summary . 23 1 3.6 Exercises . 23 3.7 Acknowledgements . 23 3.8 References . 24 3.9 Terms and Concepts . 24 Copyright (C) 2018, H. Conrad Cunningham Professor of Computer and Information Science University of Mississippi 211 Weir Hall P.O. Box 1848 University, MS 38677 (662) 915-5358 Note: This chapter adapts David Beazley’s debugly example presentation from his Python 3 Metaprogramming tutorial at PyCon’2013 [Beazley 2013a].
    [Show full text]
  • Chapter 5: Substitutes for C Constructs
    CHAPTER 5 Substitutes for C Constructs THE Java programming language shares many similarities with the C program- ming language, but several C constructs have been omitted. In most cases, it’s obvi- ous why a C construct was omitted and how to make do without it. This chapter suggests replacements for several omitted C constructs whose replacements are not so obvious. The common thread that connects the items in this chapter is that all of the omitted constructs are data-oriented rather than object-oriented. The Java pro- gramming language provides a powerful type system, and the suggested replace- ments take full advantage of that type system to deliver a higher quality abstraction than the C constructs they replace. Even if you choose to skip this chapter, it’s probably worth reading Item 21, which discusses the typesafe enum pattern, a replacement for C’s enum construct. This pattern is not widely known at the time of this writing, and it has several advan- tages over the methods currently in common use. Item 19: Replace structures with classes The C struct construct was omitted from the Java programming language because a class does everything a structure does and more. A structure merely groups multi- ple data fields into a single object; a class associates operations with the resulting object and allows the data fields to be hidden from users of the object. In other words, a class can encapsulate its data into an object that is accessed solely by its methods, allowing the implementor the freedom to change the representation over time (Item 12).
    [Show full text]
  • Beaaqualogic Enterprise Security™®
    BEAAquaLogic Enterprise Security™® Policy Managers Guide Version 2.6 Document Revised: April 2007 Contents 1. Introduction Document Scope and Audience. 1-1 Guide to this Document. 1-2 Related Documentation . 1-2 Contact Us! . 1-3 2. Security Policies Overview What is an AquaLogic Enterprise Security Policy? . 2-1 Closed-world Security Environment . 2-2 Policy Components . 2-3 Resources. 2-4 Virtual Resources . 2-6 Resource Attributes . 2-6 Privilege Groups. 2-6 Privileges . 2-6 Identities . 2-7 Identity Attributes. 2-8 Groups . 2-8 Users. 2-9 Roles. 2-10 Policies. 2-10 Role Mapping Policies . 2-10 Authorization Policies . 2-12 Delegation Policies. 2-13 Summary of Policy Differences . 2-14 Policy Managers Guide v Declarations. 2-14 Constants . 2-15 Enumerated Types . 2-15 Attributes . 2-15 Evaluation Functions . 2-15 3. Writing Policies Policy Implementation: Main Steps . 3-1 Access Decision Process . 3-4 Authentication Service. 3-4 Role Mapping Service . 3-4 Authorization Service . 3-5 Credential Mapping Service. 3-5 Authorization and Role Mapping Engine . 3-5 Using the Administration Console to Write Policies . 3-7 Administration Console Overview. 3-7 Defining Resources . 3-8 Virtual Resources . 3-11 Resource Attributes. 3-12 Privileges . 3-12 Privilege Groups . 3-13 Defining Identities . 3-14 Identity Attributes . 3-16 Groups. 3-16 Users . 3-17 Roles . 3-18 Writing Authorization and Role Mapping Policies . 3-19 Role Mapping Policies . 3-20 vi Policy Managers Guide Authorization Policies. 3-20 Role Mapping Policy Reports . 3-21 Authorization Policy Reports . 3-21 Defining Declarations. 3-22 Binding Policies .
    [Show full text]
  • Data Types Enumerated Types
    CS 1044 Intro Programming in C++ Fall 2002 August 22, 2002 Data Types 9. Types 1 data type: a collection of values and the definition of one or more operations that can be performed on those values C++ includes a variety of built-in or base data types: short, int, long, float, double, char, etc. The values are ordered and atomic. C++ supports several mechanisms for aggregate data types: arrays, structures, classes. These allow complex combinations of other types as single entities. C++ also supports other mechanisms that allow programmers to define their own custom data types: enum types and typedefs. Computer Science Dept Va Tech August, 2002 Intro Programming in C++ ©1995-2002 Barnette ND & McQuain WD Enumerated Types 9. Types 2 An enumerated type is defined by giving a name for the type and then giving a list of labels, which are the only values that a variable of that type is allowed to have. Enumerated types allow the creation of specialized types that support the use of meaningful labels within a program. They promote code readability with very little overhead in memory or runtime cost. enum Month {JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC}; enum Season {WINTER, SPRING, SUMMER, FALL}; enum Hemisphere {NORTH, SOUTH, EAST, WEST}; Month Mon; Season Period; Hemisphere Region; ... if (Mon == JAN && Region == NORTH) Period = WINTER; An enumerated type is allowed to have up to 256 values and a variable of an enumerated type will occupy one byte of memory. It is an error for the same label to be listed as a value for two different enumerated types.
    [Show full text]
  • Object-Oriented Enumerated Type Facility
    Europäisches Patentamt *EP001400895A2* (19) European Patent Office Office européen des brevets (11) EP 1 400 895 A2 (12) EUROPEAN PATENT APPLICATION (43) Date of publication: (51) Int Cl.7: G06F 9/44 24.03.2004 Bulletin 2004/13 (21) Application number: 03255511.2 (22) Date of filing: 03.09.2003 (84) Designated Contracting States: (72) Inventors: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR • Bloch, Joshua J. HU IE IT LI LU MC NL PT RO SE SI SK TR San José, CA 95129 (US) Designated Extension States: • Gafter, Neal M. AL LT LV MK San José, CA 95129 (US) (30) Priority: 09.09.2002 US 237941 (74) Representative: Davies, Simon Robert D Young & Co, (71) Applicant: Sun Microsystems, Inc. 21 New Fetter Lane Santa Clara, California 95054 (US) London, EC4A 1DA (GB) (54) Object-oriented enumerated type facility (57) A system and method are provided that facili- tate use of an object-oriented enumerated type within a computer program. During operation, the system re- ceives source code for the computer program. The source code contains a declaration for an enumerated type. This declaration specifies a fixed number of enu- meration constants that comprise the enumerated type. Next, the system defines the enumerated type using a class defined within an object-oriented programming language. The class includes a constant for each enu- meration constant specified in the declaration. If the declaration additionally contains one or more method declarations, these methods are present on the defined class. EP 1 400 895 A2 Printed by Jouve, 75001 PARIS (FR) EP 1 400 895 A2 Description Field of the Invention 5 [0001] The present invention relates to computer systems and to programming languages, and more specifically, to a method and an apparatus for facilitating the use of an object-oriented enumerated type within a programming lan- guage.
    [Show full text]
  • Enumerated Types
    Enumerated Types CSE160, Computer Science A: Honors Stony Brook University http://www.cs.stonybrook.edu/~cse160 1 Enumerated Types An enumerated type defines a list of enumerated values Each value is an identifier enum Day{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; enum TrafficLight { RED, GREEN, YELLOW } A value of an enumerated type is like a constant and so, by convention, is spelled with all uppercase letters Also, by convention, an enumerated type is named like a class with first letter of each word capitalized Once a type is defined, you can declare a variable of that type: Day day; TrafficLight t; The variable day can hold one of the values defined in the enumerated type Day or null, but nothing else 2 (c) Pearson Education, Inc. & Paul Fodor (CS Stony Brook) Enumerated Types The enumerated values can be accessed using the syntax EnumeratedTypeName.valueName For example, the following statement assigns enumerated value Monday to variable day: Day day = Day.MONDAY; Using enumerated values (e.g., Day.MONDAY) rather than literal integer values (e.g., 0, 1, 2, 3, and so on) can make program easier to read and maintain An enumerated type is treated as a special class, so an enumerated type variable is therefore a reference variable An enumerated type is a subtype of the Object class (inherits all the methods in the Object class) and the Comparable interface (has the compareTo method in the Comparable interface) 3 (c) Pearson Education, Inc. & Paul Fodor (CS Stony Brook) Enumerated Types The following methods are defined for any enumerated object: public String name(); Returns a name of the value for the object (e.g.
    [Show full text]
  • On the Interaction of Object-Oriented Design Patterns and Programming
    On the Interaction of Object-Oriented Design Patterns and Programming Languages Gerald Baumgartner∗ Konstantin L¨aufer∗∗ Vincent F. Russo∗∗∗ ∗ Department of Computer and Information Science The Ohio State University 395 Dreese Lab., 2015 Neil Ave. Columbus, OH 43210–1277, USA [email protected] ∗∗ Department of Mathematical and Computer Sciences Loyola University Chicago 6525 N. Sheridan Rd. Chicago, IL 60626, USA [email protected] ∗∗∗ Lycos, Inc. 400–2 Totten Pond Rd. Waltham, MA 02154, USA [email protected] February 29, 1996 Abstract Design patterns are distilled from many real systems to catalog common programming practice. However, some object-oriented design patterns are distorted or overly complicated because of the lack of supporting programming language constructs or mechanisms. For this paper, we have analyzed several published design patterns looking for idiomatic ways of working around constraints of the implemen- tation language. From this analysis, we lay a groundwork of general-purpose language constructs and mechanisms that, if provided by a statically typed, object-oriented language, would better support the arXiv:1905.13674v1 [cs.PL] 31 May 2019 implementation of design patterns and, transitively, benefit the construction of many real systems. In particular, our catalog of language constructs includes subtyping separate from inheritance, lexically scoped closure objects independent of classes, and multimethod dispatch. The proposed constructs and mechanisms are not radically new, but rather are adopted from a variety of languages and programming language research and combined in a new, orthogonal manner. We argue that by describing design pat- terns in terms of the proposed constructs and mechanisms, pattern descriptions become simpler and, therefore, accessible to a larger number of language communities.
    [Show full text]