객체 지향 프로그래밍(OOP : Object-Oriented Programming)은 컴퓨터 프로그래밍 패러다임 중 하나이다.
프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식이다.
객체 지향 프로그래밍의 특징은 추상화, 캡슐화, 다형성, 상속성가 있다.
추상화(Abstraction)
객체 지향에서 추상화란 클래스를 만드는 것이라고 볼 수 있다.
추상화란 공통의 속성이나 기능을 묶어 이름을 붙이는 것이다.
위 사진에서 볼 수 있듯이 피카츄, 파이리, 꼬부기들의 공통된 특징을 묶어 포켓몬으로 추상화 할 수 있다.
캡슐화(Encapsulation)
캡슐화란 같은 속성과 행위를 하나로 묶어 실제 구현 내용 일부를 외부에 감추어 은닉하는 것이다.
캡슐화를 통하여 외부에서 마음대로 접근할 수 없고, 접근 가능한 메소드를 통해서만 접근할 수 있도록 한다.
캡슐화를 통하여 높은 응집도와 낮은 결합도를 유지할 수 있도록 설게해야 요구사항을 변경할 때 유연하게 대처할 수 있다.
상속성(Inheritance)
상속성은 말 그대로 상속을 받는 것인데 상위 개념의 특징을 하위 개념이 물려받는 것을 말한다.
포켓몬이라는 클래스가 있을 때 포켓몬은 "공격한다."라는 기능이 있고 하위 클래스인 피카츄는 공격하기를 물려받고 추가로 백만볼트의 기능을 추가시켜 구체화 시켜나갈 수 있다.
상속을 통하여 코드의 재사용을 증대시킬 수 있다.
객체지향 프로그래밍은 상위클래스에 공통된 기능을 모아놓고 하위로 내려갈수록 구체화 된다.
다형성(Polymorphism)
다형성이란 하나의 메소드나 클래스가 있을 때 이것들을 다향한 방법으로 동작시키는 것을 의미한다.
포켓몬으로 비유를 하자면 포켓몬은 공격을 한다. 하지만 모든 포켓몬이 똑같은 방법으로 공격을 하는것은 아니다.
피카츄는 백만볼트, 꼬부기는 물대포로 공격을 한다. 똑같은 동작이지만 서로 다른 효과를 낸다.
다형성이란 동일한 조작방법으로 동작시키지만 동작방법은 다른 것을 의미한다.
객체 지향의 기본적인 다형성으로는 오버로딩(Overloding)과 오버라이딩(Overriding)이 있다.
오버로딩(Overloading)은 같은 클래스내에서 같은 이름의 메서드를 사용하는 것이고,
오버라이딩(Overriding)은 부모 Class에서 정의한 메서드를 자식 Class에서 변경하는 것이다.
오버로딩(Overloading)
오버라이딩(Overriding)
'프로그래밍 > 자바' 카테고리의 다른 글
자바 추상 클래스(abstract) (0) | 2019.02.21 |
---|---|
자바의 접근 지정자 (0) | 2019.02.20 |
자바의 특징 (0) | 2019.02.13 |
클래스와 객체 (0) | 2019.02.12 |
자바의 변수와 자료형 (0) | 2019.02.10 |