L4-Abstract Classes,Interfaces and OOD principles

Intended Learning Outcomes

  • To understand abstract type.
  • To enforce a design protocol by using abstract classes or interfaces.
  • To know the similarities and differences between an abstract class and an
    interface.
  • To become familiar with the process of program development.
  • To discover classes using CRC cards.
  • To understand the impacts of coupling to a system.
  • To learn the relationship types: association, aggregation, composition,
    realization and generalization.(UML class diagram)
  • To understand design principles and guidelines

Interface Syntax

  • Similar to a class but contains only constants and abstract methods.
  • Using abstract modifier.
java 复制代码
public interface InterfaceName{
	constant declarations;
	method signatures;
	}
public interface Stack{
	public static final int MAX_SIZE=100;
	public abstract int pop();
	public abstract void push(int e);
	}
  • Interface class is a special class:
    • interfaces contain abstract methods which don't define method bodies, you can't create instances from an interface using the new as usual, but you can use an interface to declare a variable.
java 复制代码
Stack s1;//no instance,only reference var
Stack[] s2=new Stack[10];
  • Properties of Interface(these modifiers can be omitted)

    • All Data fields: constant--public static final
    • All methods:abstract--public abstract
  • Using Interface(relying another class to implement the abstract class)

java 复制代码
public interface Colorable{
	abstract public void color();
	}
class Apple implements Colorable{
	@override
	public void color(){
	System.out.println("red");
	}
}
class Banana implements Colorable{
	@override
	public void color(){
	System.out.println("Yellow");
	}
}

The abstract Modifier

  • Abstract also can be used in class
    • Having both ordinary class and interface.
    • Having both abstract and non-abstract method
    • Being extended and the subclass override the abstract method from parent class with a concrete method.
    • Can't be instantiated.(can't use new operator)(can usr reference variable)
java 复制代码
public abstract class shape{
	protected char drawingchar='*';
	public abstract void draw();//abstract method
	public char getDrawingChar(){//non-abstract method
		return drawingchar;
		}
	}
  • Abstract Class(define)

    • an abstract class can contains no abstract methods
    • But a class that includes abstract methods must be an abstract class(but not all abstract)
  • Why Abstract Type?

    Abstract types are useful that they can be used to define and enforce a
    protocol ; a set of operations which all objects that implement the protocol

    must support.

Interfaces VS. Abstract Classes

Abstract Class Interfaces
no restrictions of variables All variables must be public static final
no restrictions of methods All methods must be public abstract
Constructors are invoked by subclasses through constructor chaining. An abstract class cannot be instantiated using the new operator. No constructors. An interface cannot be instantiated using the new operator.
single Inheritance,extend one class only multiple inheritance more than one interface

Object-oriented-Design Principles

  • software development process

    • Requirement Specification:understand the problem
    • System analysis: analyze the business process, capture the essential elements
    • System design: decompose the problem, establish relationships
    • Implementation: coding,testing,debugging
    • Testing:ensure the code meet the requirement
    • Deployment: available for use
    • Maintainance: provide upgrades of the product to fix newly discovered bugs
  • CRC code


  • Coupling

    • Association, aggregation, composition, realization and generalization all describe the coupling between two classes.
    • The difference is the degree of coupling.
    • In general, lower degree of coupling implies higher stability of the system.
    • Low coupling is often a desirable system property.
  • Association

    • Object of one class is connecte to object of another and there is a channel between them through which message can be sent.
    • send message each other
    • one change another change too
    • the connection relationship is usually implemented using data fields (Strong connection between 2 classes)
  • Composition and Aggregation

    • they represent a whole-part relationship (between two classes.)
    • whole contains part, but part can't contain whole
    • Composition stronger than Aggregation(because:adds lifetime responsibility--the part must be created and destroyed with whole together.)
    • Usually represented as a data field in the 'owner' class.
  • Inner class

    • If Department is used in the University class only,it is usually declared as an inner class of University.(表示这个子类只属于它,其他类中没有该子类)
    • There are three types of inner class:
  1. Member inner class - declared within another class
  2. Local inner class - declared within the body of a method
  3. Anonymous inner class - declared within the body of a method without name
    example : member inner class.
java 复制代码
public class University { 
 private Department[] depts;
 ...
 private class Department {
 ...
 }
}
  • Generalization (Extend relationship)

    • models the inheritance relationship(between 2 classes)
    1. Generalized class(superclass)
    2. Specialized class(subclass)
  • Realization

    • Represents the is-a-kind-of relationship(Implementation of interface)

Class design in 4 steps

  1. Identify classes for the system.
    Ordinary classes, abstract classes, interfaces
  2. Describe attributes and methods in each class.
    Using Modifiers public, protected, private and static
  3. Establish relationships among classes.
    Association, generalization,realization, ... etc.
  4. Create classes.
相关推荐
Mr.Jessy2 小时前
JavaScript高级:构造函数与原型
开发语言·前端·javascript·学习·ecmascript
云栖梦泽4 小时前
鸿蒙应用签名与上架全流程:从开发完成到用户手中
开发语言·鸿蒙系统
爱上妖精的尾巴5 小时前
6-4 WPS JS宏 不重复随机取值应用
开发语言·前端·javascript
Goldn.5 小时前
Java核心技术栈全景解析:从Web开发到AI融合
java· spring boot· 微服务· ai· jvm· maven· hibernate
李慕婉学姐6 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
小鸡吃米…6 小时前
Python 列表
开发语言·python
m0_740043736 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
编织幻境的妖6 小时前
SQL查询连续登录用户方法详解
java·数据库·sql
kaikaile19956 小时前
基于C#实现一维码和二维码打印程序
开发语言·c#
我不是程序猿儿7 小时前
【C#】画图控件的FormsPlot中的Refresh功能调用消耗时间不一致缘由
开发语言·c#