객체지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜서 객체를 만들고 객체들간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.
객체지향 프로그래밍의 장, 단점
장점
1. 코드 재사용 용이
- 남이만든 클래스를 가져와서 이용할 수 있고, 상속을 통해 확장할 수 있다.
2. 유지보수 쉬움
- 절차지향 프로그래밍에서는 코드를 수정할 때 일일히 찾아서 수정해야하는 반면에, 객체지향프로그래밍에서는 수정할 부분이 클래스내에서 변수나 메서드로 있기 때문에 해당 부분만 수정하면 된다.
3. 대형 프로젝트에 적합
- 클래스단위로 모듈화 시켜서 개발할 수 있기 때문에 대형 프로젝트처럼 여러명, 여러 회사가 개발할 때 업무분담하기가 수월하다.
단점
1. 처리속도가 상대적으로 느리다.
2. 객체가 많으면 용량이 커진다.
3. 설계시 많은 시간과 노력이 필요하다.
객체지향 프로그래밍의 중요 키워드 5가지
1. 클래스, 인스턴스(객체)
- 클래스는 객체를 만들기위해 멤버변수, 메서드를 정의해놓은 틀이고 인스턴스는 클래스를 실제로 메모리상에 올려서 구체화시킨 실체이다.
2. 추상화
- 불필요한 정보는 숨기고 중요한 기능만을 표현하여 공통속성과 기능을 묶어 이름을 붙이는 것이다. 즉 객체지향 관점에서 클래스를 정의하는 것이다. (!= abstract클래스)
3. 캡슐화
- 객체지향프로그래밍에서 기능과 특성의 모음을 "클래스"라는 "캡슐"안에 분류해서 넣는 것이다. 코드 재수정없이 사용가능하게 해준다.
4. 상속
- 부모클래스의 기능(메서드)과 속성(변수)을 그대로 가져와 사용할 수 있고, 원하는 대로 기능을 변경(재정의)해서 사용할 수 있게해주는 기능이 바로 상속이다. 다중상속 불가능.
5. 다형성
- 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 정의될 수 있는 것이다. 즉 오버로딩과 오버라이딩이 가능하다.
- 오버로딩 : 같은 클래스내에서 같은 함수이름을 가지고, 매개변수나 리턴타입을 다르게해서 다양한 호출에 응답이가능
- 오버라이딩 : 상속관계에 있는 클래스 사이에서 하위클래스가 상위클래스의 메서드를 재정의해서 사용할 수 있다.