개발 여정/컴퓨터공학 일반
프로그래밍에서 '추상화'란?
calm-lee
2021. 12. 1. 21:14
| 추상화 (Abstraction)
현실세계의 복잡한 개념을 컴퓨터 식으로 단순화시키는 것
예시
현실세계 위성사진 -> 지하철 노선도
추상화가 필요한 이유?
우리가 어떤 일을 할 때 그 과정을 일일이 기억하기 보다는 패턴을 외우는 것이 효율적이듯이,
프로그래밍에 있어서도 잘 추상화를 하면 유지보수 및 버그해결에 들이는 시간을 줄일 수 있다.
결국 생산성, 코드의 가독성, 코드의 재상용성을 높이는 것이다.
코드 예시
추상 클래스
- 추상 메소드를 하나라도 포함한 클래스
- 추상 메소드가 있기에 인스턴스를 생성할 수 없음
- 다형성(Polymorphism)을 가지는 메소드의 집합
- 자식 클래스의 바탕이 되는 조상 클래스
- 자식 클래스의 공통사항을 추상 클래스 하나에서 관리할 수 있으니 유지보수가 용이
추상 메소드
- 선언부만 있고 구현부는 없는 메소드
- 구현부는 상속받는 자식 클래스에서 설정한다
- 자식 클래스에서 공통된 메소드를 사용하도록 하므로 효율성을 높임
public abstract class Animal {// 추상 클래스
public abstract void call(); // 추상 메소드
}
// Cat과 Dog 클래스에서 Animal 추상 클래스를 상속받고 Override로 메소드 call도 받는다.
public class Cat extends Animal {
@Override
public void call() {
System.out.println("야옹");
}
}
public class Dog extends Animal {
@Override
public void call() {
System.out.println("멍멍");
}
}
public class CatAndDog {
public static void main(String[] args) {
// 생성자
Cat Cat = new Cat();
Dog Dog = new Dog();
// call 메소드 가져오기
Cat.call();
Dog.call();
}
}
출력