TIL day 12

어니언·2023년 1월 29일
0
post-thumbnail

오늘은 class, 객체지향프로그래밍(OOP), MVC패턴에 대해서 학습을 했다.

클래스란 객체지향 프로그래밍에서 객체를 생성하기 위해 변수와 메소드를 정의하기 위한 틀로써, 객체를 정의하기 위한 상태와 메서드로 구성이된다.

클래스 안에는 함수를 만들 수 있고, 변수또한 입력을 할 수 있는데 변수를 선언할 때에는 let, const와 같은 기능들은 사용하지 않는다.

클래스 내부에 있는 함수안에 또다른 함수를 실행하고자할 때에는 this를 이용하여 사용할 수 있습니다

기존의 클래스 내 변수의 초기 값을 다르게 주고싶을 때에는 여러 클래스를 만들면 되지만 이는 비효율적입니다.

그래서 constructor라는 내장함수를 이용하여 여러클래스를 만들 필요없이 효율적으로 초기값을 변화시킬 수 있습니다.

다음으로 클래스의 상속에 대해서 공부를 했다.
서로다른 클래스를 이용하여 객체를 만들 때, 공통점으로 적히는코드와 차이가나는 코드가 있을경우에 어떻게 할 수 있는지 학습을 했다.

두개의 클래스에 중복이되는 코드들은 한 클래스를 따로 만들어둔다. 이후 차이가 나는 코드들은 각각의 클래스에 작성을한다. 이때, extentds를 이용하여 각각 만든 코드에 중복되는 코드로만든 클래스를 지정해주면 extends를 통하여 공통기능들은 상속을 해줌으로써 사용하게 된다.

super클래스와 sub클래스와 같은 개념이 있는데, 상속을 주는 클래스는 super클래스 상속을 받는 클래스는 sub클래스라고 표현할 수 있다.

효율적으로 관리하기위한 상속과는 다른 방식으로 전략패턴도 있다.
전략패턴은 하나의 클래스를 만들어두고 기능에 따라 클래스가 다른 기능을 하도록 만들 수 있는 방법이다.

주된 한클래스를 기능에 따라 만든 부품클래스를 넣어주어 각 부품들은 주된 클래스내부의 constructor의 매개변수가되어 서로 다른 기능을 가지는 두개의 클래스가 만들어 지게된다.

무조건 상속방식이 좋은것도 아니고 무조건 전략패턴이 좋은 것이 아니므로 상황에맞게 사용할 수 있는 것이니 유연하게 사용하면 된다.

객체지향프로그래밍(Object Oriented Programming) 이란 인간 중심적 프로그래밍 패러다임이라고 할수 있다. 이는 코드의 재사용을 쉽게만들고, 유지보수를 간편하고 직관적으로 할 수 있는 장점을 가지고 있다.

OOP의 4가지 특징
1. 추상화
목적과 관련이없는 부분을 제거, 필요한 부분만 사용
추상된 특징을 파악해 인식의 대상으로 삼는다
구체적인 사물들의 공통적인 특징을 파악해 이를 하나의 개념으로 다루는 수단이다.

2. 캡슐화
하나의 객체에 그객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.

3. 상속성
상속이란 기존 상위클래스에 근거해 새롭게 클래스와 행위를 정의할 수 있도록 도와준다.
기존 클래스의 기능을 가져와 재사용, 새로운 기능을 추가 할 수 있게 해준다.
같은 특성을 다시 작성할 필요없이 재사용을 함으로써 효율성을 높인다,

4. 다형성
3번의 상속성을 통해 기능확장 , 변경을 가능하게 해준다. 다형성은 형태가 같은데 다른 기능을 하고 서로 다른 클래스의 객체가 같은 메시지를 받을 때 각자의 방식으로 동작하는 능력이다.
상속성과 연계되면 엄청난 시너지 효과가 있다.
유지보수를 용이하게 해줄 뿐만아니라 변화에도 유연하게 대처할 수 있도록 도와준다.

5. 오버라이딩
상위클래스에서 상속받은 하위 클래스에서 상위 클래스에서 만들어진 메서드를 자신의 입맛대로 다시 재정의해서 사용하는 것을말한다.

6. 오버로딩
같은 이름의 메서드이지만 메서드마다 다른 용도로 사용할 수있도록하고 그결과물도 다르게 구현할 수 있게 만드는 개념으로 오버로딩이 가능하려면 메서드끼리 이름은 같지만 매개변수의 갯수나 데이터타입이 다르면 오버로딩이 적용된다.

MVC패턴

기능에 따라 ROUTE경로로 분리하는 것이 좋은데 route에 따라 controller, view, models로 코드들을 관리하는 것이다.

endpoint별로 분리하여 controller들을 관리해주면 된다.
service파일들은 또 controller 에서 재사용이 가능하다.

profile
안녕하세요.

0개의 댓글