학습내용
프로그래밍 스탠다드
OOP(Object Oriented Programming)
- OOP(객체지향프로그래밍 )
- 객체끼리의 상호작용이 일어나는것
- 최소비용으로 최대효율을 얻기위해 개발된 페러다임
- 절차지향과 다르게 기능을 독립적으로 사용가능
- OOP의 어려운점
- 기존의 프로그래밍 패러다임들과 우열을 가릴 필요는 없다.
- 주관성이높아 소프트웨어 서비스 설계방향에 영향을 많이 받는다.
- 다양한 도메인에서 재사용 가능한 클래서, 메소드 설계가 중요하다.
- 무분별하게 활용하면 유지보수가 어려워진다.
- OOP가 나오게 된 배경
- 그 전에는 최대한 많은 기능을 적은 양의 소스코드파일에 담았다.
- 속성과 기능이 증가할 때마다 배열과 함수를 계속 생성해야했기에 소스코드를 관리하는데 비효율이 발견됨.
- 이에 속성과 기능을 object라는 최소단위로 분리하는 OOP의 개념이 나오기 시작함.
- OOP 사용시
- 실제로 머릿속에서 떠올릴 수 있는 것을 프로그래밍
- 기능별로 개체가 효율적으로 재사용가능하도록 분리
-
OOP 특징
-
추상화
- 핵심적인 특징 및 공통적인 특징을 도출하는 것
- 실제 실행되는 기능은 보여지지않는다
- 추상클래스를 상속받은 다른 클래스의 메소드에서 확인할 수 있다.
-
캡슐화
- 내부 속성과 함수를 하나로 묶어서 클래스로 선언하는 개념
- 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 은닉할 수 있다.
-
상속성
- 상속 : 상위 클래스의 모든 기능을 재사용할 수 있다.
- 포함 : 다른 클래스의 일부 기능만을 재사용한다.
-
다형성
-
상속과의 차이는 다형성은 상위클래스의 기능을 변경하여 사용
-
overriding : 부모클래스의 메소드와 같은 이름을 사용하며 내부 소스를 재정의하는 것
만약, 필요에 의해 오버라이딩한 자식 클래스의 over 메소드를 삽입 했으나 부모 클래스의 over 메소드도 같이 필요하다면 super() 를 이용
-
overloading : 같은 이름의 함수를 여러 개 정의한 후 매개변수를 다르게 하여 같은 이름을 경우에 따라 호출하여 사용하는 것
-
동적바인딩
절차 지향 vs 객체 지향
- 대형 프로그래밍의 경우 많은 기능을 수반하기 때문에 절차 지향보다는 객체 지향이 적합
- 각 객체가 하는 역할이 많아도, 많은 역할을 객체로 묶을 수 있기 때문
- 소형 프로그래밍의 경우 작은 기능을 수반하기 때문에 객체 지향보다는 절차 지향이 적합
- 작은 기능을 객체별로 나눌 경우, 오히려 복잡해질 수 있기 때문
Reference
http://www.incodom.kr/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5#h_9bf884dacd40599823d1d2a59bfb9f78
https://nirsa.tistory.com/115