개발 여정/컴퓨터공학 일반

프로그래밍에서 '추상화'란?

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();

	}

}

 

출력