[CS 스터디]객체지향 CS

한주영·2023년 2월 21일
0

CS

목록 보기
1/19

객체지향

4가지 특징

객체란?

객체지향 프로그래밍의 가장 기본적인 단위이자 시작점

객체지향이란?

필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고
객체들간의 유기적인 상호작용 로직을 구성하는 프로그래밍 방법

4가지 특징

캡슐화

-데이터와 코드의 형태를 외부로부터 알수없게 하고, 데이터의 구조화 역할,기능을 하나의캡슐형태로만드는방법
방법
맴버변수앞에 접근 제어자 private을 붙인다
private은 자신의 클래스에서만 사용할수있는것을말함

추상화

-클래스들의 공통속성 변수/메소드

-추상클래스: 추상메서드를 포함하고있는 클래스
->class 앞에도 abstract를 붙여준다

상속화

  • 부모클래스에 정의된 변수 및 메서드를 자식클래스에서 상속받아 사용
class 자식클래스 extend 부모클래스{
   //필드
   //생성자
   메서드
}

다형성

-다양한 형태로 표현이 가능한구조
ex)오버로딩, 오버라이딩이있음

오버로딩
-하나의 클래스 안에서 같은이름의 메서드를 여러개 정의하는것을 말함

void display(int num1)              // 전달받은 num1을 그대로 출력함.

void display(int num1, int num2)    // 전달받은 두 정수의 곱을 출력함.

출처: 생활코딩 예제

오버라이딩
-부모 클래스로부터 상속받은 메서드 내용을 재정의하는것

class SuperClass{
      public void method (매개변수1,매개변수2)
}
class SubClass extends SuperClas(매개변수1, 매개변수2){  //이게오버라이딩
    
}

5원칙

단일책임원칙(SRP: Single Responsibility Principle)

-하나의 클래스는 하나의 책임만 가져야한다

개방폐쇄 원칙(OCP: Open/Closed Principle )

-확장에는 열려(Open) 있으나, 변경에는 닫혀(Closed)있어야 한다.

리스코프 치환 원칙(LSP: Liskov's Substitution Principle)

-프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함

인터페이스 분리원칙(ISP: Interface Segregation Principle)

-몇개의 큰 인터페이스보다 작은 인터페이스가 많은 편이 바람직하다

의존관계 역전 원칙(DIP: Dependency Inversion Principle)

-비즈니스와 관련된 부분이 세부 사항에는 의존하지 않는 설계원칙

객체지향 VS 절차지향 VS 함수형 프로그래밍

객체지향이란?

필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고
객체들간의 유기적인 상호작용 로직을 구성하는 프로그래밍 방법

ex) JAVA, C++, Python

객체지향의 장점

-코드의 재활용성이 높음
-코딩이 절차지향보다 간편함
-디버깅이 쉽다.

단점

-처리속도가 절차지향보다 느림
-설계에 많은 시간이 듬

절차지향이란?

물이 위에서 아래로 흐르듯이 순차적인 처리가 중요시되며 프로그램전체가 유기적으로 연결되도록 만드는
프로그래밍 기법
ex)대표적인 언어로 C언어가 있음

절차지향의 장점

-컴퓨터의 처리구조와 유사하므로 실행속도가 빠르다

단점

-유지보수가 어렵다
-실행순서가 정해져있으므로 순서가 바뀌면 같은 결과를 얻기가 어려움
-디버깅이 어려움

함수형 프로그래밍이란?

하나의 프로그래밍 패러다임으로 정의되는 일련의 코딩접근 방식
자료처리를 수학적 함수의 계산으로 취급하거고
상태와 가변데이터를 멀리하는 프로그래밍 패러다임을 의미함

여기서 프로그래밍 패러다임이란 프로그래머에게 프로그래밍의 관점을 갖게하고
결정하는 역할을 함.

프로그래밍패러다임은 두가지로 나뉨
명령형 프로그래밍
-절차적 프로그래밍
-객체지향 프로그래밍

선언형프로그래밍
-함수형 프로그래밍: 순수함수를 조합하고 프로그램을 만드는 방식

ex)클로저, 스칼라, 하스켈

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글