python with OOP

seongyong·2021년 7월 12일
0

컴퓨터 공학 기본

목록 보기
3/8
post-custom-banner

학습내용

프로그래밍 스탠다드

  • 반복되는 것만 함수로 만들기

  • null값을 반환하는 일이 있다면 함수 이름에 orNULL 넣어주기

OOP(Object Oriented Programming)

  • OOP(객체지향프로그래밍 )
    • 객체끼리의 상호작용이 일어나는것
    • 최소비용으로 최대효율을 얻기위해 개발된 페러다임
    • 절차지향과 다르게 기능을 독립적으로 사용가능
  • 용어 정리

    • Object(객체) : 클래스, 인스턴스, 함수, 변수 등 실체가 있는 모든 물체
    • Class : 객체를 분류해주는 설계도와 같은 것.
    • Instance : class를 통해 객체를 실체화 시킨 것

    object가 생성된 이후, object가 소프트웨어의 메모리할당이 되면 인스턴스가 된다.

  • OOP의 어려운점
    • 기존의 프로그래밍 패러다임들과 우열을 가릴 필요는 없다.
    • 주관성이높아 소프트웨어 서비스 설계방향에 영향을 많이 받는다.
    • 다양한 도메인에서 재사용 가능한 클래서, 메소드 설계가 중요하다.
    • 무분별하게 활용하면 유지보수가 어려워진다.
  • OOP가 나오게 된 배경
    • 그 전에는 최대한 많은 기능을 적은 양의 소스코드파일에 담았다.
    • 속성과 기능이 증가할 때마다 배열과 함수를 계속 생성해야했기에 소스코드를 관리하는데 비효율이 발견됨.
    • 이에 속성과 기능을 object라는 최소단위로 분리하는 OOP의 개념이 나오기 시작함.
  • OOP 사용시
    • 실제로 머릿속에서 떠올릴 수 있는 것을 프로그래밍
    • 기능별로 개체가 효율적으로 재사용가능하도록 분리
  • OOP 특징

    1. 추상화

      img

      • 핵심적인 특징 및 공통적인 특징을 도출하는 것
      • 실제 실행되는 기능은 보여지지않는다
      • 추상클래스를 상속받은 다른 클래스의 메소드에서 확인할 수 있다.
    2. 캡슐화

      img

      • 내부 속성과 함수를 하나로 묶어서 클래스로 선언하는 개념
      • 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 은닉할 수 있다.
    3. 상속성

      img

      • 상속 : 상위 클래스의 모든 기능을 재사용할 수 있다.
      • 포함 : 다른 클래스의 일부 기능만을 재사용한다.
    4. 다형성

      img

      • 상속과의 차이는 다형성은 상위클래스의 기능을 변경하여 사용

      • overriding : 부모클래스의 메소드와 같은 이름을 사용하며 내부 소스를 재정의하는 것

        만약, 필요에 의해 오버라이딩한 자식 클래스의 over 메소드를 삽입 했으나 부모 클래스의 over 메소드도 같이 필요하다면 super() 를 이용

      • overloading : 같은 이름의 함수를 여러 개 정의한 후 매개변수를 다르게 하여 같은 이름을 경우에 따라 호출하여 사용하는 것

    5. 동적바인딩

절차 지향 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

post-custom-banner

0개의 댓글