친구에게 객체지향이 뭐냐는 질문을 받아 대답하는도 중
내가 설명이 끊기는 일이 생겼다.
그래서 다시 한번 객체지향에 대해 알아보려 한다.
객체지향 프로그램은 로직을 상태와 행위로 이루어진 객체로 만드는 것이다.
쉽게 비유를 하자면 레고 블록을 조합해서 하나의 프로그램을 만드는 것이라 생각하면 된다.
다시 말하자면 객체지향 프로그래밍은 객체를 만드는 것이다.
그럼 전체적인 개념은 알아보았으니,
객체 지향 프로그래밍의 장, 단점 간단하게 알아보자.
-장점
- 코드 재사용이 용이하다.
남이 만든 클래스를 가져와서 사용도 가능하고, 상속을 통해 확장 사용 가능.
- 유지보수가 쉬움
절차 지향에서는 일일이 찾아가며 수정해야 하지만, 객체 지향 프로그래밍에서는 수정해야 하는 부분의 클래스 내부에
변수 또는 메소드로 있기 때문에 해당 부분만 수정하면 된다.
- 대형 프로젝트에 적합하다.
클래스 단위로 모듈화를 시켜 개발이 가능하므로 업무 분담이 쉽다.
-단점
- 처리속도가 상대적으로 느리다.
- 객체가 많으면 용량이 커질 수 있다.
- 설계 시 많은 시간과 노력이 필요함.
마지막으로 객체 지향 프로그래밍의 키워드 5가지 를 알아보자.
1) 클래스, 인스턴스(객체)
클래스 : 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것이다.
인스턴스(객체) : 클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것으로 실제 프로그램에서 사용되는 데이터이다.
2) 추상화
불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 공통의 속성이나 기능을 묶어 이름을 붙이는 것이다.
(=객체지향 관점에서 클래스를 정의하는 것.)
3) 캡슐화
캡슐화의 목적 : 코드를 재수정 없이 재활용하는 것.
객체지향 프로그래밍에서 기능과 특성의 모음을 클래스라는 캡슐에 분류 해서 넣는 것이 캡슐화다.
4) 상속
상속은 부모 클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 하고 기능의 일부분을 변경해야 할 경우 상속받은 자식 클래스에서 해당 기능만 다시 수정(정의)하여 사용할 수 있게 하는 것이다.
*다중 상속은 불가능.(필요에 따라 인터페이스로 다중상속 가능. 자세한 건 extends와 implements의 차이에 있음.)
5) 다형성
하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것이다.
즉 오버 라이딩, 오버로딩이 가능하다는 얘기이다.
오버라이딩 : 부모 클래스의 메소드와 같은 이름, 매개변수를 재정의 하는 것.
오버 로딩 : 같은 이름의 함수를 여러 개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것.
이번에는 객체 지향 프로그래밍에 대해 정리를 해보았다.
이 포스팅은 다른 블로그와 사이트를 참고하여 정리하여서 사이트 링크를 남기도록 하겠다.
참고한 사이트:
'언어 공부 > Java' 카테고리의 다른 글
[JAVA] 람다식의 개념과 사용법 (0) | 2021.10.07 |
---|---|
[JAVA] Replace(문자열 치환) 에 대하여 (0) | 2021.10.05 |
JAVA 메소드의 개념 (0) | 2021.09.14 |
자바 extends와 implements 에 대해 (0) | 2021.09.07 |
JAVA 클래스의 개념 (0) | 2021.09.01 |