gatsjy.log
로그인
gatsjy.log
로그인
02. 객체지향 프로그래밍이란
The Great Gatsjy
·
2021년 2월 11일
팔로우
0
이것이자바다
0
이것이 자바다
목록 보기
2/2
객체 지향 프로그래밍의 특징
1. 캡슐화(Encapsulation)
캡슐화란 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말한다. 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있다.
ex) 물이라는 객체에서 끓는 점이라는 중요한 필드가 있다고 가정해보자. 이 끓는 점이라는 필드값을 외부에서 수정가능하게 만든다고 할때, 어느날 부터 개발자의 실수로 100도가 끓는 점이 아니라 -100으로 바뀌었다고 생각해보면? 큰일이 날 것이다.
위의 문제를 자바 언어에서는 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지 결정하기 위해 접근 제한자(Access Modiier)를 사용한다.
접근 제한자는 객체의 필드와 메소드의 사용범위를 제한함으로써 외부로부터 보호한다.
2. 상속(Inheritance)
일반적으로 상속은 부모가 가지고 있는 재산을 자식에게 물려주는 것을 말한다.
객체지향프로그래밍에서도 부모 역할의 상위 객체와 자식 역할의 하위 객체가 있다. 상위 객체는 자기가 가지고 있는 필드와 메소드를 상위 객체에게 물려주어 하위 객체가 사용할 수 있게 해준다.
그렇다면 이점은 무엇일까? 이미 잘 개발된 객체를 재사용해서 새로운 객체를 만들기 때문제 반복된 코드의 중복을 줄여준다.
두번째 이점, 상속은 상위 개체의 수정으로 모든 하위 객체들의 수정 효과를 가져오므로 유지 보수 시간의 최소화를 시켜주기도 한다.
3. 다형성(Polimorphism)
다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다.
ex) 같은 동물이란 클래스를 상속받은 강아지와 고양이라는 객체가 있다. 동물이란 클래스에는 짖어! 라는 메서드가 있다. 강아지와 고양이는 이 짖어! 라는 메서드를 구체화한 메서드가 있는데. 각각 강아지는 멍멍!, 고양이는 야옹! 이라고 짖는다.
이러므로 코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다.
자바는 다형성을 위해 부모 클래스 또는 인터페이스의 타입 변환을 허용한다. 부모타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다. 다형성의 효과로 객체는 부품화가 가능하다.
ex) 예를 들어 자동차를 설계할 때 타이어 인터페이스 타입을 적용했다면 이 인터페이스를 구현한 실제 타이어들은 어떤 것이든 상관없이 장착(대입)이 가능하다.
ex) 자동차는 타이어 타입으로 한국 타이어와 금호 타이어를 사용하지만 각 타이어의 성능은 다르게 나온다(다형성)
객체와 클래스
현실에서 객체는 갑자기 하늘에서 떨어지는 것이 아니라, 설계도를 바탕으로 만들어진다. 예를 들어 자동차를 이용하기 위해서는 우선 공장에서 설계도를 보고 자동차를 만들어야 한다. 객체 지향 프로그래밍에서도 마찬가지다.
메모리에서 사용하고 싶은 객체가 있다면 우선 설계도로 해당하는 객체를 만드는 작업이 필요하다.
자바에서는 설계도가 바로 클래스(class)이다. 클래스에서 객체를 생성하기 위한 필드와 메서드가 정의되어 있다. 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 한다. 자동차 객체는 자동차 클래스의 인스턴스인 셈이다.
그리고 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다. 하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있는데, 이것은 동일한 설계도로부터 여러 대의 자동차를 만드는 것과 동일하다.
객체 지향 프로그래밍의 개발 세 가지 단계
첫 번째 단계는 클래스를 설계해야 한다. 두 번째 단계는 설계된 클래스를 가지고 사용할 객체를 생성해야 한다. 그리고 마지막 단계는 생성된 객체를 이용하는 것이다.
The Great Gatsjy
Overcome and move on to the next stage.
팔로우
이전 포스트
01. 자바 시작하기
0개의 댓글
댓글 작성