객체 지향
소스코드가 너무 길어져서 자기자신도 파악하기 힘들어진다.
복잡함을 극복하기 위해 --> 이해하기 쉽게 코드를 짜야한다.
객체지향이란?
Object-Oriented-Programming(OOP)라고 불리며 '객체'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
유연하고 변경이 쉽게 만들기 떄문에 대규모 소프트웨어 개발에 많이 사용된다.
객체 지향 프로그램의 장단점
<장점>
1. 코드 재사용이 용이하다
2. 유지보수가 쉽다
3. 대형 프로젝트에 적합하다
<단점>
1. 처리 속도가 상대적으로 느리다
2. 객체가 많으면 용량이 커질 수 있다.
3. 설계시 많은 시간과 노력이 필요하다.
객체 지향 프로그래밍 키워드 5가지!!
클래스 : 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메소드로 정의한 것디가.
객체 : 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것이다.
<2. 자료의 추상화>
클래스를 설계하는 것 자체를 의미. --> 공통의 속성이나 기능을 묶어 이름을 붙이는 것
<3. 캡슐화>
캡슐화의 목적은 크게 2가지로 나타낼 수 있다.
객체가 외부에 노출하지 않아야할 정보 또는 기능을 접근제어자를 통해 적절히 제어 권한이 있는 객체에서만 접근하도록 할 수 있기에 코드의 수정이 일어났을 때 책임이 있는 객체만 수정하면 되기에 영향 범위를 예측하는데 수월해졌다.
뿐만 아니라 관련된 기능과 특성을 한 곳에 모으고 분류하기 때문에 객체 재활용이 원활해졌다.
객체 지향 프로그래밍에서 기능과 특성의 모음을 "클래스"라는 "캡슐"에 분류해서 넣는것이 캡슐화.
<4. 상속>
절자 지향 프로그래밍에서도 "라이브러리"를 통해서 남이 짜놓은 소스 코드를 가져와 사용할 수 있었다.
하지만 내 의도에 맞게 수정하게되면 다른 라이브러리가 되어 버전에 따라 동작하지 않을 수 있고 불필요한 코드의 수정작업을 해야한다는 것이다.
상속은 부모클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게하고 기능의 일부분을 변경해야 할 경우 상속받은 자식클래스에서 해당 기능만 다시 수정(정의)하여 사용할 수 있게 하는 것이다.
<5. 다형성>
하나의 변수명, 함수명 등이상황에 따라 다른 의미로 해석될 수 있는 것이다.
오버라이딩, 오버로딩이 가능!
오버라이딩 : 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는것.
오버로딩 : 같은 이름의 함수를 여러개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것.
▶ 자세한 내용들은 추후에 따로 다룰 예정