되자!백엔드개발자
JAVA(자바) - 객체지향과 절차지향 본문
앞에서 객체지향과 절차지향에 대해 이미 글을 쓴 것 같긴 한데 class를 다시 배우다가 다시 정리해서 따로 글을 판다.
찐!마지막! last! 정리
객체지향 언어(OOP: Object Oriented Programming)
자바의 특징을 설명하라면 객체지향 언어라고 많이 말한다. 그렇다면 정확하게 객체란 무엇일까?
객체(Object)란 물리적이든 추상적이든 자신의 속성과 행동을 가지고 다른 것과 식별이 가능한 것을 뜻한다.
객체지향한다는 것은 세상의 물체를 객체를 표현하고, 이것들의 관계와 상호작용을 설계한 뒤 각 객체를 클래스로 구현한다. 언어 중 대표적으로 JAVA와 C++이 있다.
객체지향언어의 특성
1. 캡슐화
객체의 가장 본질적인 특징으로 객체를 캡슐로 싸서 내부를 보호하는 것이다.
자바는 class라는 캡슐을 사용하고 이 캡슐화 특성을 철저히 지키기 때문에 절대 class 밖에 그 어떤 것도 존재할 수 없다.
2. 상속
하위 개체가 상위 개체의 특성을 물려받고 기능을 추가하여 확장하는 것을 뜻한다.
상위 개체를 부모클래스, 하위 개체를 자식클래스라고 한다. 이 특성으로 코드를 재사용할 수 있어 시간과 비용을 줄일 수 있다.
3. 다형성(Polymorphism)
같은 이름의 메소드가 클래스나 객체에 따라 다르게 작동하는 것을 뜻한다.
오버라이딩과 오버로딩으로 이 특성이 실현된다. 관련 글은 따로 적을 예정.
절차지향언어
객체 지향의 반대를 절차지향언어라고 한다. 목적을 행하고 그 것을 행하기 위한 일의 흐름을 가장 중시하여 절차를 정하고 이 절차대로 프로그래밍 하는 방법을 뜻한다. 대표적인 언어로는 C가 있다.
객체지향언어 VS 절차지향언어
이렇게 용어 뜻만 얘기하면 그래서 이게 뭔 차인데 싶을거다. 나도 그랬고... 자판기 프로그램을 구현하는 경우를 예로 들어살펴 보자. 절차지향언어로 구현한다면 일의 흐름부터 생각한다. 사용자는 먼저 자판기에 동전을 넣고, 돈이 충분한지 판별한뒤 맞다면 상품을 선택하고, 이것의 재고가 있는지 확인한뒤, 있다면 상품을 준다. 이런 흐름대로 코딩을 짜는 것을 절차지향언어라고 한다. 반면 객체지향 언어는 부품들을 객체로 취급하여 구현한다. 자판기 엔진, 돈통, 커피통, 물통, 프림통, 컵통, 버튼들, 디스플레이를 각자 구현한 뒤 돈통에 돈이 충분히 들어오면 자판기 엔진과 어떻게 상호작용을 하는지, 거기서 자판기 엔진은 버튼들과 다시 상호작용이 생길거고, 그 뒤 커피통, 프림통, 컵통과도 서로 상호작용이 코딩하는 것을 객체지향 언어라고 한다.
즉 객체지향 언어가 더 위에 객체지향의 특성에서 말했듯 캡슐화, 상속, 다형성 등 코드를 재사용하기 위한 여러 기법들 덕분에 시간과 비용이 줄어 생상성이 향상되고, 절차지향보다 실세계를 모델링하기 더 쉽다는 장점이 있다.
'개발공부 > JAVA' 카테고리의 다른 글
Java(자바) - 접근지정자 (0) | 2022.07.24 |
---|---|
JAVA(자바) - Class와 객체/생성자/this.와 this()/객체배열 (0) | 2022.07.24 |
JAVA(자바) - 배열과 for-each문 (0) | 2022.07.14 |
JAVA(자바) 키 입력 Scanner (0) | 2022.07.14 |
Java(자바) 좋은 이름을 붙이는 관습 (0) | 2022.07.13 |