-
프로그래밍에서 '추상화'란?개발 여정/컴퓨터공학 일반 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(); } }
출력
'개발 여정 > 컴퓨터공학 일반' 카테고리의 다른 글
프록시 서버 (Proxy Server) (0) 2023.04.14 [자료구조] 단방향 연결 리스트 (Singly Linked Lists) (0) 2022.12.10 [디자인패턴] MVVM 구조란? (0) 2022.09.22 [Java] 객체지향 프로그래밍이란? (OOP, Object-Oriented Programming) (0) 2021.12.07