![](https://csdnimg.cn/release/download_crawler_static/10450249/bgf.jpg)
11
© 2014 The College Board. Visit the College Board on the Web: www.collegeboard.org.
COMMENTARY ON THE TOPIC OUTLINE
The topic outline summarizes the content of the AP Computer Science A curriculum.
In this section, we provide more details about the topics in the outline.
I. Object-Oriented Program Design
Computer science involves the study of complex systems, of which computer software
is often a part. To understand the development of computer software, we need tools
that can make sense of that complexity. Object-oriented design and programming form
an approach that enables us to do that, based on the idea that a piece of software, just
like a computer itself, is composed of many interacting parts.
The term design, as used here, refers to the design of implementations that meet
particular specifications, as opposed to the design of specifications that meet particular
requirements or of the requirements themselves. Students need not start by designing a
whole program but may study programs already developed, then write or modify parts of
a program to add to or change its functionality. By the end of the course students will be
able to work from a specification to develop a design for a program or part of a program.
In an object-oriented approach, the fundamental unit of an executing program is an
object, an entity that has state (data) and behavior (operations that access or change
its state and that may interact with other objects through well defined interfaces). The
AP Computer Science A curriculum uses the common class-based approach to object-
oriented programming, in which objects are defined by classes: a class specifies the
components and operations of an object, and each object is an instance of a class.
A. Program and Class Design
A fundamental part of the development of an object-oriented program is the design of its
classes. Students should understand inheritance (“is-a”) relationships and composition
(“has-a”) relationships among the different classes that comprise a program. They
should also be able to implement a class inheritance hierarchy when given the
specifications for the classes involved — which classes are subclasses of other classes.
Students should be able to design a class — write the class declaration including the
instance variables and the method signatures (whose bodies would comprise the
implementation of this design) — when they are given a description of the type of
entity the class represents. Such a description would include the information that must
be encapsulated by the class and the operations that can be applied to an instance of
the class to access or modify that information. The design of a class includes decisions
on appropriate data structures for representing its information and on algorithms for
operations on that data. The decomposition of operations into subsidiary operations —
functional decomposition — is part of the design process.
Given a design for a class, either their own or one provided, students should then be
able to implement the class. They should also be able to extend a given class using
inheritance, thereby creating a subclass with modified or additional functionality.
An interface is a specification for a set of operations that a class must implement. In
Java, there is a specific construct, the interface, which can be used for this purpose, so
that the specification of the methods applicable to a class can be separated from
implementations of that specification. Students should be able to write interfaces, write
classes that implement interfaces and write programs that use interfaces.