CS

[CS] 프로그래밍 공통

날아 2023. 1. 31. 04:22
OOP(객체지향 프로그래밍)이란
더보기
  • 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, '객체'들의 상호작용으로 프로그램 로직을 구성하는 프로그래밍 패러다임이다. 하나의 클래스를 바탕으로 서로 다른 상태의 인스턴스를 만들면서 다른 행동들을 하게 할 수 있다. 

 

객체지향 언어의 특징 
더보기
  • 캡슐화와 데이터 은닉
    • 캡슐화는 서로 관련이 있는 변수와 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 한다.
    • 외부로부터 데이터를 보호할 수 있고,  외부에는 불필요한 내부적으로만 사용되는 부분을 감춘다.
    • 내부 구조는 private하게 감춰두어 클래스 밖에서 객체에 직접적인 접근을 막는 것을 데이터 은닉이라 한다.
    • 대신 getter, setter 라고 부르는 메소드를 통해서 접근 가능케 하는 것을 말한다. 
  • 상속
    • 조상클래스의 속성과 메소드를 자손클래스가 이어받는 것을 말한다.
    • 상속에는 extends (상속), has ~a (포함)하는 방법이 있는데, extends는 모든 메소드를 오버라이드해야 한다는 단점이 있지만 has~a는 필요한 메소드만 가지고 올 수 있는 장점이 있다. 
  • 추상화
    • 공통의 속성이나 기능을 묶어 이름을 붙이는 것이다.
    • 인터페이스 혹은 추상 클래스가 있다.
    • 중복코드를 줄일 수 있고 코드의 재사용성이 증가한다.
    • 생산성 증가, 가독성 증가, 에러 감소, 유지보수시 시간 단축 등의 효과가 있다.
  • 다형성
    • 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능한 것을 의미한다.
    • 오버라이딩 : 자손클래스에서 조상클래스의 메서드를 재정의하여 사용하는 것. 동적 바인딩. 중복 코드를 줄일 수 있고 기능 확장에 이점이 있다.
    • 오버로딩 : 같은 메서드의 이름으로 다양한 입력에 대해서 처리할 수 있도록 한다. 다른 인자정보를 넘겨주면 인자 정보에 맞는 메서드가 호출된다. 정적 바인딩 

 

OOP의 5가지 설계 원칙
더보기
  • SRP : 단일책임원칙 (single responsibility principle)
    • 한 클래스는 하나의 책임만 가져야 한다.
    • 중요한 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 책임 원칙을 잘 따른것이다.
    • ex) 회원가입 시 데이터 베이스에 저장하는 클래스와 비밀번호 암호화 클래스를 분리.
  • OCP : 개방-폐쇄 원칙 (Open/closed principle)
    • 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야한다.
    • 다형성 활용 추상화 활용
    • ex) 비밀번호 암호화 방법을 가진 클래스가 다른 클래스로 변경될 경우, 회원가입시 데이터 베이스에 저장하는 클래스의 코드를 변경해야 할 수도 있다.(OCP 위반) 이를 개선하기 위해서 
  • LSP : 리스코프 치환
    • 다형성에서 하위 클래스는 인터페이스 규약을 모두 지켜야 한다는 것 
    • 자동차 인터페이스의 엑셀은 앞으로 가라는 기능. 이것을 뒤로 가라고 바꿀 수 없다.
  • ISP : 인터페이스 분리 원칙
    • 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다. 
  • DIP : 의존관계 역전 원칙
    • 프로그래머는 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻이다.

 

 

 

'CS' 카테고리의 다른 글

[CS] JAVA  (0) 2023.02.05