質問                    | 
                
                    答え                    | 
            
        
        | 
     学び始める
 | 
 | 
      Abstraction means separating the top level usefulness of a thing from the details of its implementation so that the programmers is freed from worrying about details.   
 | 
 | 
 | 
      what are the 2 modern methods for abstraction    学び始める
 | 
 | 
      control/process abstraction and data abstraction   
 | 
 | 
 | 
      explain control/process abstraction    学び始める
 | 
 | 
      Process abstraction is necessary for achieving program modularity, which means dividing up a system into components or modules, each of which can be designed, implemented, tested, reasoned about, and reused separately from the rest of the system.   
 | 
 | 
 | 
| 
     学び始める
 | 
 | 
      Data abstraction enforces a clear separation between the abstract properties of a data type and the concrete details of its implementation.   
 | 
 | 
 | 
      what does an ADT consist of    学び始める
 | 
 | 
      a set of data, and necessary operations on the data.   
 | 
 | 
 | 
      what are Abstract Data Types (ADTs)    学び始める
 | 
 | 
      An abstract data type is a user-defined data type   
 | 
 | 
 | 
| 
     学び始める
 | 
 | 
      For example, List is a widely used data structure Data: a collection of items, each item has a position in a sequential order. Operations: add/remove an item, sort the items,...   
 | 
 | 
 | 
      what must be decieded when designing an ADT    学び始める
 | 
 | 
      a set of core operations for users to use the data type. The core operations support the basic uses of the data   
 | 
 | 
 | 
      what are the basic rules for ADT design    学び始める
 | 
 | 
      [1] Basic information should not be difficult to obtain [2] The set of operations should be adequate [3] Each operation should have a well-defined purpose [4] Have a few simple operations that can be combined to perform more complex operations.   
 | 
 | 
 | 
      what do you need when Implementing an ADT    学び始める
 | 
 | 
      To implement an ADT, you need to choose: a data representation and algorithms.   
 | 
 | 
 | 
      what is ADT data representation    学び始める
 | 
 | 
      [1] internal storage container is used to hold the items in the collection, e. g an array [2] users of the ADT need not know the representation [3] users not allowed to tamper with the representation [4] all data private [5] use accessors and mutators   
 | 
 | 
 | 
| 
     学び始める
 | 
 | 
      [1] An algorithm for each of the necessary operations, e.g., an algorithm for sorting a list. [2] All auxiliary (helper) operations that are not in the contract should be private.   
 | 
 | 
 |