Object Orinted programming(OPP) 란??
객체 지향 프로그래밍 으로 프로그래밍 방식중 하나이며 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
그럼 왜 사용할까??
1. 코드 재사용이 편함: 만들어 놓은 클래스를 재사용하여 상속과 확장이 편하다
2. 유지 보수가 수월함: 절차 지향 은 하나하나 다 찾아야하는 반면 객체 지향은 수정이 필요한 클래스 내부만 건들면 된다
3. 코드 분석이 쉬움: 코드가 직관적이기 때문에 눈으로 보기 편하다
단점
1. 다소 처리속도가 느리다
2. 객체가 많으면 용량이 커진다
객체지향 프로그래밍에서 중요한 5가지
1.클래스와 인스턴스
2.캡슐화 Encapsulation
3.추상화 Abstraction
4.상속 inheritance
5.다형성 polymorphism
클래스와 인스턴스
클래스: 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 클래스라는 집단을 만들어 그안에 속성과 행위를 변수와 메소드로 정의한 것 (붕어빵 틀)
인스턴스: 클래스를 이용해서 새로 만든 객체 (붕어빵)
캡슐화(Encapsulation)
객체의 속성과 메소드들 하나로 묶고 실제 구현 내용을 감춘다
!외부 객체는 객체 내부의 구조를 알지 못하며 노출해서 제공하는 속성과 메소드만 사용가능
외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 접근제한자를 사용 설정함
장점
1. 객체어서 포함됨 정보의 손상과 오용을 막음
2. 객체 내부의 조작방법이 바뀌어도 사용방법은 바뀌지 않음
3. 다른 객체에 영향을 주지 않는다
추상화(Abstraction)
객체 지향 프로그래밍에서 추상화(Abstraction)는 객체들의 공통적인 프로퍼티와 메서드를 뽑아내는 작업
인간친화적인 방식으로 공통의 속성이나 기능을 묶어 큰거 하나 만들어 이름을 붙이는 것
장점
1. 유지 보수가 수월함
2. 협업에서 소통 수월함
3. 코드 가독성이 좋음
상속(Inheritance)
부모클래스로 찍어낸 자식을 부모클래스의 속성과 메소드를 그대로 사용할 수 있으며 또한 찍어낸 자식을 필요한 부모클래스의 속성과 기능은 그대로 유지하면서 일부분의 기능을 수정해서 사용할 수 있다
장점
1. 하위 객체를 쉽고 빠르게 생성 가능함
2. 유지 보수 시간을 줄여줌
3. 반복적인 코드를 줄이며 개발 시간 절약
다형성(polymorphism)
하나의 타입에 여러 객체를 대입해 다양한 기능을 이용 할 수 있게 하는 것
오버라이딩 : 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는것.
오버로딩 : 같은 이름의 함수를 여러개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것.
장점
1. 객체의 부분화가 가능함
2. 확장성이 좋은 코드를 작성할 수 있다