Week9
·
BE/23-1-GDSC - OC-BE
이번장은 자바 문법에 관한 이야기다. 1. 람다와 스트림 람다란? 람다(lambda)란 이름이 없는, 즉 익명을 의미한다. 따라서 람다함수란 익명함수를 의미하는데 말그대로 익명함수이기에 함수의 이름이 없이 괄호와 매개변수, 화살표(->)만으로 함수를 작성할 수 있다. 다음과 같이 말이다. (x) -> x+1 이렇게 코드를 작성하면 코드가 간결해진다는점, 개발자의 의도가 명확히 드러난다는 점, 함수를 선언과 동시에 사용할 수 있어 생산성이 높아진다는점, 병렬처리의 가능하다는 장점이 있다. 이러한 이유로 java8에서부터 람다 함수를 지원한다. 하지만, 장점만 존재하는 것은 아니다. 람다를 사용하면, 다음과 같은 단점이 존재하기에 주의해서 사용해야한다. 첫째, 함수 이름이 없기 때문에 반복된 작업을 간결히 ..
Week8
·
BE/23-1-GDSC - OC-BE
1. IoC와 프레임워크, 라이브러리 IoC란? Inversion of Control의 약자로 제어에 관해 역전이 일어났다는 것을 의미한다. 그러면 여기서 Control은 무엇을 제어하는 것을 의미할까? 우리는 개발자니까, 프로그래밍적으로 생각해보면 당연히 코드, 프로그램에 관한 제어이다. 개발자는 자신이 작성한 코드에 대해 자신이 원하는대로 흘러가길 바란다. 이렇게 작성해서 이러한 흐름으로 코드가, 프로그램이 진행되어야지~ 하는 개발자의 흐름대로 코드가 작성되고 흘러가는 것이 일반적이고 이러한 경우를 프로그래머가 제어권을 가지고 있다고 한다. 이러한 제어의 흐름을 조금 더 세분화해서, 객체지향 프로그래밍에서 '제어'란, 객체들간의 의존성을 연결하고 객체의 생성을 담당하는 것을 의미한다. 즉, 지금까지 ..
Week7
·
BE/23-1-GDSC - OC-BE
SOLID란 좋은 객체지향 설계를 위한 5가지 원칙을 의미한다. 지금부터 그 5가지에 대해 알아보도록하자. SRP (Single Responsible Principle) : 단일 책임 원칙 한 클래스는 단 하나의 기능,책임만을 가지고 있어야한다는 원칙이다. 한 클래스의 책임 영역을 확실하게 해야한다느 의미이다. 그렇다면 책임의 범위가 무엇일까? 이는 상황에 따라 다르지만 변경을 기준으로 한다. 한 클래스의 기능을 변경하거나 코드를 수정할때, 이에 따른 다른 클래스의 파급효과가 적을수록 srp를 잘 따르고 있는 것이다. OCP (Open / Close Principle) : 개방 - 폐쇄 원칙 소프트웨어는 확장에는 열려있어야하나 변경에는 닫혀있어야한다. 즉, 새로운 기능을 추가하는 것과 같은 확장이 일어나..
Week6
·
BE/23-1-GDSC - OC-BE
1. 추상클래스와 인터페이스 지난 글에서 추상화에 대한 이야기를 다뤘다. 이 글에선 자바가 추상화를 통해 객체지향을 어떻게 활용하고 있는지에 대해 다뤄보겠다. 자바에선 객체지향을 적극적으로 활용하기 위해 추상화를 통해 여러 객체를 만들고 연관관계가 있는 객체들의 공통성을 뽑아 super class로 만들기도하고 관련된 하위 sub class를 추가하기도 하는 '상속'관계를 적극 활용하고 있다. Super class에서 메소드를 정의하고 이를 오버라이딩을 통한 다형성을 적극 활용한다. 두가지 방법이 존재하는데 '추상클래스'와 '인터페이스'를 활용한 방법이 존재한다. 추상클래스 추상클래스를 활용하기 위해선 extends로 표현한다.말그대로 상위 클래스인 SupClass, 추상 클래스에 정의된 내용을 '확장'..
Week5
·
BE/23-1-GDSC - OC-BE
1. 객체지향 패러다임과 객체란? 객체지향 패러다임 앞서 언급한 절차지향형 프로그래밍에서 이전까지 프로그래밍의 패러다임은 함수지향적이었다. 코드를 논리적인 단위로 구분하는 방식으로 작성하며 인간의 입장에서 기계를 이해하고자 하는 방향의 언어들이 주를 이루었다. 하지만, 객체지향 패러다임은 이와 다르게 현실세계 그 자체를 인지하고 프로그래밍에 반영하도록 하고자 하는 패러다임이다. 즉, 세상에 존재하는 모든 사물들을 인지하고 모든 사물을 객체화하고자한다. 따라서 각각의 사물의 고유한 속성과 행동을 정의하고 이를 Attribute와 Operation으로 정의하고자한다. 객체란? 앞서 Class와 Object를 구분할때 클래스는 Definition 특정 사물을 정의한 것을 의미하고 객체는 이를 실체화(insta..
Week4
·
BE/23-1-GDSC - OC-BE
1. 순차 지향 프로그래밍과 절차 지향 프로그래밍의 특징과 차이 순차 지향 프로그래밍 순차 = sequential이다. 즉, 프로그램이 코드의 순서에 맞춰서 흐름대로 진행되게 프로그래밍을 하는 것을 의미한다. 절차 지향 프로그래밍 절차 = procedual이다. Procedual의 개념은 조금 다르긴한데 여기서는 함수라고만 이해하자. 이때 반복되거나 재사용될 가능성이 있는 코드에 대해서 미리 procedual를 만들어 놓고 필요할때마다 이를 활용하게 프로그래밍하는 것을 의미한다. 차이점? 한 기능을 반복해서 실행한다고 생각해보자. 여기서는 a와b를 입력받고 이를 출력하는 기능을 구현한다고 생각하자. 간단한 CPP code를 보겠다. int main(void){ //a+b를 입력받고 더한 값을 sum으로 ..
Week3
·
BE/23-1-GDSC - OC-BE
이번주 GDSC BE Study 과제는 필수 조건이 많네.. 어느정도 안다고는 생각하지만 막상 설명해보라니 설명하기가 어렵다. 이 기회에 잘 정리해서 설명해보자. 아! 다음 과제부터는 새 책을 나가니 새 책을 구해보자. 은근 설레기도하고? ㅋㅋㅋ 암튼 이번주 WIL을 정리해보자. 1. 의존과 의존성 의존 객체지향에서 의존은 신뢰와 관련되어 있다. 특정 클래스 A가 원하는 기능을 하기 위한 코드를 작성할 때, 다른 클래스 B의 Method나 interface를 참조하여 작성한다고 하자. 해당 클래스가 제대로 작동하기 위해선, 자신이 참조한 다른 클래스의 method나 interface가 제대로 동작해야한다. 이들이 제대로 동작하지 않으면 자신 클래스에서 작성할 기능도 제대로 동작하지 않기 때문이다. 즉, ..
Week2
·
BE/23-1-GDSC - OC-BE
지난 주에는 MVC, API, Restful 에 대한 공부를 해봤다. 이번주에는 MVC에서 Controller와 서비스, 리포지토리와 그들의 관계에 대한 이야기를 할 것이며 TDD에 대한 이야기를 다룰 예정이다. 1. 컨트롤러, 서비스, 리포지토리의 역할 컨트롤러 웹 MVC에서 언급한 Controller와 동일하다. 지난주 WIL에서 컨트롤러를 '사용자의 응답을 바탕으로 비즈니스 로직을 담당하는 역할이다. 사용자의 입력으로 데이터가 업데이트 되면 이를 처리한 후 업데이트된 모델을 뷰로 전달하는 역할을 한다.'라고 언급했다. 컨트롤러는 실제 사용자의 요청이 들어오면 적절하게 이를 처리하거나 처리할 수 있는 로직을 호출한다. 이때 호출되는 로직이 서비스이다. 컨트롤러가 하는일에 대한 예시를 들어보자. 어떤 ..
Week1
·
BE/23-1-GDSC - OC-BE
정리해야할 주제가 많다. 입문편 강의는 이번이 3번째인데 3번을 듣고나서야 기본적인 이해가 되었다. 이번주 필수 정리주제는 다음과 같았다. MVC 패턴이란? API와 서버 - 아무 API나 써보길 권장 RestFul API에 대한 이해 1. MVC패턴이란? MVC 패턴은 소프트웨어 디자인 패턴 중 하나 Model View Controller의 약자로 사용자의 인터페이스와 데이터,논리 제어(비즈니스 로직)를 구분해서 구현하는데 주로 사용된다. Model APP이 사용할 데이터를 정의하고, 데이터를 Model 이라는 객체에 담아서 활용한다. 데이터가 변경되면 Model이 view에게 이를 알려 화면을 변경하거 컨트롤러에게 알리기도 한다. View 데이터를 보여주는 방식을 의미한다. 주로 데이터를 어떻게 화면..
유쓰응
'BE/23-1-GDSC - OC-BE' 카테고리의 글 목록