오늘 공부한 내용

  • 코드카타 2문제
  • 면접대비 2문항 공부
  • CI/CD 구현을 위해서 스파르타 강의 시청

 

어려웠던 내용

  • CI/CD 구현을 위하여 gradle.yml 설정을 작성하는게 너무 어렵다. 자세한 내용이 강의에 안나와 있어서 열심히 구글링 하면서 찾고 주변 다른 팀에게도 물어다녀봤지만 적을때마다 생겨나는 오류와 문제점들로 해결이 안돼서 계속 찾고있다.

 

새로 알게된점

  • DI, IoC에 대하여

DI(Dependency Injection, 의존성 주입): DIIoC의 한 형태로, 클래스가 자신이 의존하는 객체를 직접 만들지 않고 외부에서 주입받는 패턴입니다. 예를 들어, 클래스 A가 클래스 B의 메서드를 사용해야 할 때, AB를 직접 생성하지 않고 외부에서 B의 인스턴스를 주입받아 사용합니다. 이 방식을 통해 클래스 간의 결합도를 낮추어 코드의 재사용성을 높이고, 테스트하기 편하게 만듭니다.

IoC(Inversion of Control, 제어의 역전): 전통적인 프로그래밍에서는 객체가 자신의 행동을 제어합니다. 그러나 IoC 패턴에서는 이러한 제어 흐름이 외부 컨트롤러에 의해 결정됩니다. , 객체가 프로그램의 흐름을 제어하는 대신 외부에서 그 흐름을 관리하고 제어하는 것입니다. 이로 인해 코드 간의 결합도를 낮추고, 유연성과 확장성을 높일 수 있습니다.

 

 

  • 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요?

정의 : 프로그램을 객체들의 집합으로 보고 이들이 서로 상호작용하도록 설계하는 방법론

 

ORM 이란 :  객체와 관계형 데이터베이스 간의 매핑을 자동화하는 기술을 말하며 이를 사용하면 개발자는 SQL 쿼리를 직접 작성하지 않고도 객체 지향적인 방식으로 데이터베이스와 상호 작용할 수 있다.

 

객체지향 프로그래밍의 핵심 원칙에는 캡슐화, 상속, 다형성이 있다.

1. 캡슐화는 객체의 상태와 행동을 하나로 묶어 외부의 접근을 제한한다.

2. 상속은 코드의 재사용성을 높이고 중복을 줄이는데 도움을 준다.

3. 다형성은 하나의 인터페이스나 클래스가 다양한 형태로 동작할 수 있게 하여 유연성과 확장성을 높인다.

 

이런 원칙들을 활용하면, 코드의 재사용성을 높이고, 유지보수와 테스트를 용이하게 하며, 실제 세계의 문제를 더욱 효과적으로 모델링할 수 있습니다. 예를 들어, 웹사이트에서 '사용자'라는 클래스를 만들어 각 사용자의 정보와 행동을 모델링하고, 이를 통해 각 사용자가 독립적으로 행동하도록 만드는 것입니다."

 

절차지향 프로그래밍과 차이점

객체지향 프로그래밍은 상속, 다형성 등의 원칙 덕분에 코드의 재사용성이 높고, 새로운 기능을 추가하거나 변경하기 쉽습니다.

하지만 절자지향 프로그래밍은 데이터와 함수를 사용하다보니 명확한 문제에 대해 직관적으로 접근하는 데 유리하지만 코드의 재사용이 상대적으로 어렵고, 기능의 변경이나 확장이 기존 코드에 영향을 미칠 수 있어서 간단한 문제나 알고리즘 구현에 많이 쓰입니다.

 

오늘의 느낀점

오늘 팀원들과 토의중 빠른배포를 위하여 CI/CD를 하기위하여 은채님과 같이 하게 되었다.

내용에 대해서 잘 알지 못해서 강의 시청 하면서 CI/CD가 무엇인지 와 왜 사용되는지에 대해서 공부하다 보니

좀더 업무를 효율적으로 사용함과 동시에 사용자들의 편의성을 중점으로 한 프로그램이라는것을 알게 됬다.

gradle.yml을 작성하여 설정을 하라고 하는데 gpt 와 구글링으로 찾다보니 현재 하고 있는 프로젝트를 CI/CD로 적용하기위해서 작성하는 내용이 맞는것인지 잘 구분이 안가면서 하다보니 시간은 참 빠르게 가지만 성과는 잘 나지 않는다.

개발자가 되면 검색하는 것과 이를 적용하는 것도 중요한 능력이라고 하는데 아직 많이 미숙한지 너무 어렵게 느껴진다.

 

+ Recent posts