3 Pages

Lecture16

Course: CS 2130, Fall 2009
School: East Los Angeles College
Rating:
 
 
 
 
 

Word Count: 3303

Document Preview

Programming CS2130 Language Concepts Unit 16 Encapsulation and Abstraction Client/Server Model Most modern programming languages provide a means of grouping related services together in some program entity. This entity is variously called a package, a module or a class depending on the particular programming language used. In these notes for definiteness I will use the term module to refer to these entities. A...

Register Now

Unformatted Document Excerpt

Coursehero >> California >> East Los Angeles College >> CS 2130

Course Hero has millions of student submitted documents similar to the one
below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.

Course Hero has millions of student submitted documents similar to the one below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.
Programming CS2130 Language Concepts Unit 16 Encapsulation and Abstraction Client/Server Model Most modern programming languages provide a means of grouping related services together in some program entity. This entity is variously called a package, a module or a class depending on the particular programming language used. In these notes for definiteness I will use the term module to refer to these entities. A module typically provides a service that is utilised by a client. The interface of a module should provide exactly the information needed by the client to use the service effectively and it is important that the interface should be identified clearly and precisely. Details of how a module fulfils its task is irrelevant to the client and should be hidden. The client is provided with the services it requires at an appropriate level of abstraction; complexity is thus reduced by preventing the unwanted coupling of client activities and the details of the way that the module provides its services. The compiler can check the legality of a client's use of a module by inspecting only the module interface. In C++, Eiffel and Java classes are the primary mechanism of encapsulation and information hiding. Information hiding is provided by designating entities of the class as public protected private unrestricted visibility visibility in class and sub-classes for C++ visibility in class, sub-classes and package for Java visibility in class only In Java grouping classes together in a package provides a secondary mechanism for encapsulation and controlling information visibility: protected fields and methods of a class are visible to other (unrelated) classes of the package as well as to sub-classes whether in the package or not. Java also has a default visibility category (when an explicit public, protected or private is omitted from a method or data member declaration). With the default visibility an entity is visible to all classes in the package, but not to sub-classes which are not part of the package. An `historical' note: in early versions of Java methods or data members could be declared as private protected; this meant that the entity was visible in the class and in sub-classes, but not in unrelated classes even those in the same Java package. This usage, which corresponded to the C++ meaning of protected, appears to have been dropped from later versions of Java. In Ada modules are referred to as packages. The interface of a package and its implementation are separated into a package specification and a package body respectively. This physical separation has several advantages: reduction in the need for recompilation particularly in large systems; a client does not need recompilation when the body of a package that it is using is altered, but only when the specification is changed possibility of providing several different implementations of a service with the same interface possibility of providing only a binary version of the package body; thus protecting proprietary information in the source code. A Barnes, 2006 1 CS2130/Unit 16 However there are some disadvantages: extra files for separate package specifications and bodies increase in the overall size of the source code as subprogram headings etc. need to be duplicated in the package specification and body. In C++ the interface or specification of a class consists of the declarations of the data members of the class and the declarations (function prototypes) of its methods. The implementation of the methods of a class are usually separated from the specification of the class. For example the following declaration could appear in one file class SomeClass { public: int someMethod(int somePar); // declaration of other public methods & data members private: void someOtherMethod(); // declarations of other private methods and data members } In this way the interface to the class is clear and not obscured by details of the implementations of the methods. Then later in the same file or perhaps more usually in a separate file the full definitions would appear: int SomeClass::someMethod(int somePar) { // implementation of the method ........ } void SomeClass::someOtherMethod() { // implementation of the method ........ } Note the "double colon" notation class::methodname used when defining a method to specify the class to which the method belongs. Sometimes (usually for short accessor & mutator methods) the implementation of some or all methods can be included in the class specification, in which case the class name and double colon are omitted when a method is defined in the class specification. Note that the double colon notation is only used in C++ when defining methods. To call a method one uses the object.method(parameters) notation as in Java In Eiffel and Java the interface and implementation of a class form a single entity and software tools (such as javadoc) can extract a brief and easily viewable module interface specification from the full module. This approach achieves most of the advantages of separating specification and implementation whilst avoiding most of the disadadvantages. Encapsulation A module is said to encapsulate its contents. Encapsulation provides: modularity by grouping related components together as a named unit information hiding via selective interface specification. which in turn support: program organisation via decomposition into components to perform particular tasks A Barnes, 2006 2 CS2130/Unit 16 abstraction building by providing abstract data types etc. Various uses of modues are illustrated below starting with simple examples where only source code modularity is gained, then moving onto examples which provide increasing levels of abstraction that provide more valuable forms of modularity. Grouping together related constants, types and subtypes A module can group together a collection of related constants, types and/or subtypes which may be relevant to a number of applications or to a number of packages in a large software system. Such modules normally have only a specification and no body. One example is the standard Ada library package Ada.Characters.Latin_1 which provides names for characters in the standard character set so that (for example) control characters and accented characters can be easily referred to in programs even if these characters are not available on standard computer keyboards. PACKAGE Ada.Characters.Latin_1 IS NUL : CONSTANT Character := Character'Val(0); -- NUL has internal numerical (ASCII) code 0 ... BEL : CONSTANT Character := Character'Val(7); -- BEL has internal numerical (ASCII) code 7 ... COLON : CONSTANT Character := Character'Val(58); ... UC_E_Acute : CONSTANT Character := Character'Val(201); -- upper case E acute ... END Ada.Characters.Latin_1; After importing the package with a WITH clause, the entities of the package can be used: WITH Ada.Characters.Latin_1; ....... Put(Ada.Characters.Latin_1.BEL); -- ring the terminal bell or we can make the entities of the package directly visible with a USE clause: WITH Ada.Characters.Latin_1; USE Ada.Characters.Latin_1; ....... Put(BEL); Put(BEL); -- ring the terminal bell twice Here is another example of a module without a body (or more accurately a class without any methods) to group together related physical constants. public class Physics { // physical constants in SI units // speed of light public static final double c = 2.99792458e8; // Planck's constant public static final double h = 6.6260687652e-34; // and so on } The class could then be used as follows: double mass; double energy; ........ energy = mass*Physics.c*Physics.c; A Barnes, 2006 3 // E = mc2 CS2130/Unit 16 In Java 1.5 it is possible to make the static data members (and static methods) of a class directly visible by means of an import static declaration: import static Physics; ........ energy = mass*c*c; // E = mc2 The modules in this section provide organisational convenience only. Grouping together related subprograms A module can group together a number of related procedures and functions, together with any types and subtypes needed to specify parameter and result types. There are many such packages in the standard Ada libraries, for example Ada.Text_IO, Ada.Calendar and Ada.Character.Handling. For example PACKAGE Ada.Characters.Handling IS FUNCTION Is_Control(Item : Character) RETURN Boolean; -- returns True if Item is a control character ... FUNCTION Is_Lower(Item : Character) RETURN Boolean; -- returns True if Item is a lowercase letter ... FUNCTION To_Upper(Item : Character) RETURN Character; -- returns corresponding uppercase letter if Item is a lowercase -- letter, otherwise returns the character unchanged FUNCTION To_Upper(Item : String) RETURN String; -- returns the string with all letters converted to uppercase ... END Ada.Characters.Handling; Normally such modules have both a specification and a body or in Java terms the class has both data members and methods. A Java class which provides only static constants and static methods is analogous to this type of module. .An example of such a class is the standard Java class java.lang.Math which provides the trigonometrical and exponential functions and their inverses (sine, cosine, tangent, logarithm, arc sine etc.). Again we would normally use an import static context clause when using the facilities of the class import static java.lang.Math; ...... double y = sin(sqrt(2.0)); The modules in this section provide organisational convenience and some abstraction namely procedural abstraction. Abstract Data Objects A module body can encapsulate a hidden data object accessible only via exported subprograms. Direct access to the data object is prevented and the implementation details of the object and of the operations acting upon it can be modified without affecting client programs provided the interface (module specification) is unaltered. The data object is abstract as its properties are defined entirely by the subprograms provided to manipulate it. A client program that uses the object does not require (and cannot affect) any concrete details the object's representation. Such abstract data objects are sometimes referred to as encapsulated data In objects. C one could define a stack as an abstract data object (ADO) as follows: in a header file A Barnes, 2006 4 CS2130/Unit 16 stack.h one would define the interface to the stack by declaring (but not defining) the functions to access and update the stack: /* stack.h */ external void push(int n); external int pop(); int IsEmpty(); /* returns 1 if the stack is empty and 0 if not */ Then in the file stack.c we would define the data structures for the stack (for example a linked list) and provide implementations of these three functions. Direct access to the stack data structure from outside the file stack.c would be prevented by declaring the stack data structure to be static (recall this restricts its scope to the file in which it is declared). /* stack.c */ typedef struct node { int val; struct node* next; } Node; typedef Node* List; static List stack = null; /* encapsulated data object */ void push(int n) { List tmp = (List)malloc(sizeof(Node)); tmp->val = n; tmp->next = stack; } int pop() { int tmp = stack->val; List head = stack; stack = stack->next; free(head); return tmp; } int IsEmpty() { return (stack == NULL); } To use this stack `object', client code would simply include the following line at its head: #include stack.h ....... push(3); push(4); ....... if(!isEmpty()) n = pop(); /etc. */ The details of the implementation of the stack object are completely hidden from the client code. It would be possible to change the implementation of the stack (that is the file stack.c), for example to use an array-based implementation, without changing client code or the header file stack.h in any way. The above code provides a higher degree of abstraction than those in the previous sections; both procedural and data abstraction are provided as the details of both the data structure and of the operations that act upon it are hidden from clients. A Barnes, 2006 5 CS2130/Unit 16 The nearest analogue of an ADO in Java is a class with a static private data structure and public static access methods. public class IntStack { private class Node { public int val; public Node next; public Node(int n, Node next) { val =n; this.next = next; } } private class List { public Node head; } private static List stack = new List(); public static void push(int n) { stack.head = new Node(n, stack.head); } public static int pop() { int n = stack.head.value; stack.head = stack.head.next; return n; } public static boolean isEmpty() { return stack.head == null); } } To use the stack in client code we would do: IntStack.push(3); IntStack.push(4); ....... if(!IntStack.isEmpty()) { n = IntStack.pop(); } Abstract Data Types The abstract object approach in the last section is valuable, but has some limitations: A client program can import only one copy of the package providing the data object and is therefore limited to just one instance of the abstract object. This may be sufficient in many applications, but clearly in some circumstances a program may well require several instances of the object. The object's value is 'second class'; it cannot be passed as a parameter to a subprogram nor assigned to a variable etc.. To overcome these restrictions we require a further layer of abstraction to introduce an abstract data type (ADT). Defining an abstract data object creates just one entity, but defining an abstract data type allows many objects with a given set of properties to be created. A module providing an abstract data type will need to export a type name which clients may use to create objects of the abstract type and will also need to export operations A Barnes, 2006 6 CS2130/Unit 16 (subprograms) that can be applied to instances of the abstract type. In Java the definition of an ADO as in the last section is somewhat awkward; it would be more natural and flexible to define the stack to be an abstract data type (by removing the static qualifiers) public class Stack { private class Node { public int val; public Node next; public Node(int n, Node next) { val =n; this.next = next; } } private class List { public Node head = null; } private List stack = new List(); public void push(int n) { stack.head = new Node(n, stack.head); } public int pop() { int n = stack.head.val; stack.head = stack.head.next; return n; } public boolean isEmpty() { return stack.head == null); } } One then defines a single object of this class: Stack s = new Stack(); Of course this approach is much more flexible than the ADO approach as one could define and use many different stack objects: Stack s1 = new Stack(); Stack s2 = new Stack(); ....... s1.push(3); s2.push(4); ....... if(!s1.isEmpty()) n = s1.pop(); The language C has no facilities for supporting abstract data types. One can implement a stack type as (say) a linked list and declare many objects of that type. However in C there was no way of hiding the details of the implementation from client code (which therefore has direct access to the data structure). We have, in effect, a concrete (as opposed to an abstract) data type. However in C++ we have classes very similar to those in Java and so can define both ADTs and ADOs. The Ada package mechanism is also sufficiently powerful to support the A Barnes, 2006 7 CS2130/Unit 16 definition of ADTs as well as ADOs. In Ada we might code a stack ADT similar to the Java one above as follows: PACKAGE StackADT IS TYPE Stack IS LIMITED PRIVATE; -- details of the type are private (hidden from clients) PROCEDURE Push(N : IN Integer; S :IN OUT Stack); -- push the integer N onto the top of stack S PROCEDURE Pop(N : OUT Integer; S : IN OUT Stack); -- Remove integer from the top of stack S and return it -- via OUT parameter N. -- Raises Constraint_Error if the stack is empty FUNCTION IsEmpty(S : IN Stack) RETURN Boolean; -- Return True if stack S is empty and False otherwise. PROCEDURE Init(S : IN OUT Stack); -- (Re-)Initialise the stack S to empty PRIVATE -- details of the impementation hidden from the client TYPE Node; TYPE Stack IS ACCESS Node; END StackADT; The public part of the package specification defines a partial view on the type Stack which is adequate for decla...

Find millions of documents on Course Hero - Study Guides, Lecture Notes, Reference Materials, Practice Exams and more. Course Hero has millions of course specific materials providing students with the best way to expand their education.

Below is a small sample set of documents:

East Los Angeles College - CS - 2130
CS2130 Programming Language ConceptsUnit 10 Function and Procedure AbstractionsExpressions & Commands Revisited Recall that an expression is anything that can be evaluated to produce a value whereas a command modifies program state (the internal s
East Los Angeles College - CS - 2130
CS2130 Programming Language ConceptsUnit 12 - Bindings and Scope Binding Each time execution of a program in a high-level programming language such as Ada or Java reaches a declaration that declaration is elaborated which has the effect of binding o
East Los Angeles College - CS - 2130
CS2130 Programming Language ConceptsUnit 15 General Access Types In the last unit access or pointer types were used to provide a means of manipulating objects created by an allocator (i.e. NEW). Such access types are referred to as pool-specific acc
East Los Angeles College - CS - 2130
CS2130 Programming Language ConceptsUnit 8 - Programming Language Concepts Names A name is a string of characters used to identify some entity in a program (such as a variable, type, subprogram etc.) Names are often referred to as identifiers. A num
CSU Fullerton - OPS - 535
1OPS535Advanced TCP/IP Network AdministrationRPC and NFSRaymond Chan Seneca College of Applied Technology2What is RPC?RPC is a programming paradigm (or protocol) Based on work at Xerox PARC in the early 1980s RPC use XDR encoding Used by
CSU Fullerton - OPS - 535
Professor: RaymondChan Email: raymond.chan@senecac.on.caUseemailforallcommunication.Pleaseuse propergrammarandspelling.OnlyemailsfromyourSenecaLearn accountswillbereplied.PleaseaddOPS535asaprefixtothesubject line. Webpage: Myhomepageisathttp:/cs.sene
Air Force Academy - ME - 324
Granta Design, February 2007 Granta Design, February 2007Getting started with CES EduPackThese exercises give an easy way to learn to use the CES EduPack software. The comprehensive Help file and CES InDepth within the software give more detail
Air Force Academy - ME - 492
Air Force Academy - ME - 492
East Los Angeles College - CS - 2130
7#4a#"#A#0#0#1#1#1#1#X#23#23#23#2C# #2S#2o#2o#3a#x#23#3# #3#47#*#4a#1#47#4#&#47#47#4a#47#47#47#47# #47##47#Answer 3 questions.Time allowed: 1.5 hoursDisclaimer:This sample paper gives an indication as to the style of the sort of questions that may ap
Air Force Academy - ME - 492
Air Force Academy - ME - 492
Air Force Academy - ME - 492
Air Force Academy - ME - 229
2009WeekJan. 5 Jan. 9Introduction to Engineering DesignMonday Lab.1B71 2:30-5:20PM Class start Jan 5 Introduction of Faculty and Group Members Introduction to the Design Projects. Prof. Burton Design Process & Designers- Prof. W.Szyszkowski (Co
East Los Angeles College - CS - 2130
CS2130 Programming Language ConceptsUnit 15 addendum Function Pointers in C and C+We can also define function pointers in C or C+. For example to define a pointer type to refer to functions of type double > double we would define#include <math.h>
CSU Fullerton - SRT - 0901
SRT210Week OneWeek OverviewCourse Introduction System Administrators' Role Security Policy Role Types of Security Policies Week One TasksYour ProfessorRaymond Chan Email: raymond.chan@senecac.on.ca Home page: cs.senecac.on.ca/~rchan/ Office
East Los Angeles College - CS - 2130
There is no lab sheet for the labs in the weeks ending Fri 24thFebruary and Friday 3rd March.This is to allow students to work on the PLC coursework assignmentwhich is due in 7th March.There will be a lab sheets for the labs in week 8-11 ( wee
Air Force Academy - ME - 492
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsLab Class 4 An On-screen Time Display Program In this example a task is used to manage a clock which displays the time and date at a certain position on the screen; every second the task updates the
Air Force Academy - ME - 492
Air Force Academy - ME - 492
Air Force Academy - ME - 492
Air Force Academy - ME - 492
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 11 More on Synchronisation in Concurrent Ada Programs The Ada Rendezvous Protected objects and protected types largely solve the problem of synchronising task access to shared data structures. P
Air Force Academy - ME - 492
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 16 - More on Object-Oriented Programming in Ada Object-Oriented Features in Standard Ada Libraries The standard Ada libraries use the object-oriented features of Ada to provide a number of power
Air Force Academy - ME - 492
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 13 Encapsulation and Abstraction Client/Server Model A package typically provides a service that is utilised by a client. The interface of a package should provide exactly the information needed
Air Force Academy - ME - 492
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 8 General Access Types In CS1210 (DSA) access or pointer types were used to provide a means of manipulating objects created by an allocator (i.e. NEW). Such access types are referred to as pool-
Air Force Academy - ME - 492
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 4 - Bindings and Scope Binding Each time execution of a program in a high-level programming language such as Ada reaches a declaration that declaration is elaborated which has the effect of bind
Air Force Academy - ME - 324
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 12 Java Threads A thread in Java is an instance of the Thread class (or a class that extends Thread). The Thread class provides methods to create, control and synchronise a thread. When a thread
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 5 Function and Procedure Abstractions Functions A function definition establishes name for a program entity which, when called, yields a value (of a specific type) which usually depends on one o
Air Force Academy - ME - 492
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 10 Synchronization in Concurrent Ada Programs Protected Variables In Ada 95 a simple mechanism: namely protected variables, was introduced for controlling access to shared data. A protected vari
Air Force Academy - ME - 324
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsLecture 2 - Programming Language Concepts Every programming language has syntax and semantics: The syntax of a programming language is concerned with the form of expressions, commands and declaration
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 16 Object-Oriented Programming in Ada Tagged Types In the previous lecture we saw how a new type could be derived from an existing type and how such a type inherited the primitive operations of
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsLecture 14 Generics In the previous lecture the package IntStack provided an abstract data object namely a stack of integers. It should be clear that the implementation of a stack of floating point n
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 7 - More on Types Semi-Boolean Truth Values In some languages (for example C and C+, but not Java) there is no special Boolean type as such. Instead comparisons and other Boolean expressions pro
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 3 - Values, Types and Variables The term value refers to anything that results when an expression is evaluated, or an entity that may be stored in a memory cell within the computer, or which for
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 9 Concurrent Programming in Ada Tasks So far we have only considered sequential programs in which statements are obeyed in a single thread of control. However a program can also be built from tw
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsUnit 6 Renaming in Ada It is possible to give a new name to certain Ada entities using a renaming declaration. The following entities can be renamed: variables constants array elements packages recor
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsPractical Class 2 Solutions Solutions to the first lab class exercises may now be found on the module web-site and in the Unix directory ~barnesa/cs2130/lab1. Recall that you can access the module we
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsPractical Class 1 The Module Web-site Check that you can access the module Web-site by following the CS2130 link from my home page with URLhttp:/www.aston.ac.uk/~barnesaor following the links Prog
East Los Angeles College - CS - 2130
CS2130 Programming Language Concepts and ParadigmsPractical Class 3 The Ada.Command_Line and POSIX.Files Packages The purpose of this lab is to introduce a few more of the Ada Libraries available with the Gnat Ada system. which enable an Ada program
Air Force Academy - ME - 475
f4_3f4_4
CSU Fullerton - OPS - 234
AS/400 Operations Navigator It is now possible for a user to execute AS/400 commands without having to learn Command Language syntax. Also, for those users who are aware of CL but feel more productive by pointing and clicking with a graphical interfa
East Los Angeles College - CS - 2130
7#<#R#:#}#P#3#P#3#Q3# #Q=##QI#QW#QW#QW#QW##Qc# #Qm# #Qw#Qw#Qw#Qw#Qw# #Q#Qp#Q #Qe#Q#Q#,#Q#Q#Q #Q#Q#Q#Q# #Q#R# # # ##CS2130 Programming Language Concepts and ParadigmsUnit 9 Concurrent Programming in AdaTasksSo far we have only considered sequentia
East Los Angeles College - CS - 2130
7#|#:#v6#%#3# #3#3#.#a#$#I#w# #p## # # # # #,#"##&# (#,#0#2#6# # ## #CS2130 Programming Language Concepts and ParadigmsUnit 4 - Bindings and ScopeBindingEach time execution of a program in a high-level programming language such as Ada reaches a dec
Air Force Academy - ME - 324
Iron and Iron-Fe3C Equilibrium Phase DiagramIron (Fe) * Occurs naturally in meteorites. Only a small quantity is of terrestrial origin. * Is the second most abundant metal (after aluminium) in the Earths crust. It constitutes about 95% of all the me
East Los Angeles College - CS - 2130
7#\t# #Y #$#.# #.# .#>#CN#<\# \# \# \## h# # r# # |#R|# |# |#R|# # U# #d# # #7# # # #R# # #v# # # ## #CS2130 Programming Language Concepts and ParadigmsUnit 10 Synchronization in Concurrent Ada ProgramsProtected VariablesIn Ada 95 a simple mechanis
Air Force Academy - ME - 492
Department of Mechanical Engineering University of Saskatchewan ME464.3 MATERIALS IN ENGINEERING DESIGN Mid-Term Examination Instructor: I. Oguocha Date: 1 March, 2002.Instructions 1. Answer ALL Questions Time: 1 hours 2. Class notes are allowed. C
UMBC - PHYSICS - 151
Find the Angles An 82 kg traffic light is supported by two cables, one pulling up and to the right with 500 N, the other pulling up and to the left with 643 N. Find the angle which each cable makes with the horizontal.
Air Force Academy - ME - 492
ME492.3MaterialsinEngineeringDesign DepartmentofMechanicalEngineering UniversityofSaskatchewan ASSIGNMENT#1SOLUTIONJanuary2009 Question #1 Several professions claim to design one thing or another. Typical examples include: Fashion designer/tailor (de
Air Force Academy - ME - 229
AutoCAD 10% Progress report 5% Log book 10% Design report 25% Presentation 20% Final exam 30% Assignments P/F WHMIS P/F If you receive a F, marks will be withheld until a satisfactory performance has been achieved.Final MarksThe marks represent ra
Air Force Academy - ME - 229
Four Layered Spherical Display Structure:Panoramic Display of Lumieres PhotostereosynthesisGARNET HERTZ: DESIGN PROPOSALGarnet Hertz 1 January 2008 garnethertz@gmail.comAbstract: Proposal for building of a custom four-layered transparent spher
CSU Fullerton - GAM - 666
GAM666 Introduction To Game ProgrammingWindows Programming in C+ You must use special libraries (aka APIs application programming interfaces) to make something other than a text-based program. The C+ choices are: The original Windows SDK (Softwa
Air Force Academy - ME - 229
ME 229 AutoCAD SectionAssignment # 6 Draw the following drafts: Sizes of mechanical parts according to the dimension shown Lines and text are to be properly defined in different layers. Model geometry, dims and text in model space Use Papers