TIL 금일 공부

|

1. SPRING BOOKMARK 프로젝트 진행상황

  • 개발스펙 : java 8, spring 5, mybatis, mysql
  • 테이블 관계설정 및 생성 ( 1차 완료 ) 19.03.04
  • xml 설정 작업중 ( thylemeaf, tomcat 설정완료, lombok ) 19.03.04
  • mybatis 설정 ( Junit 테스트완료 ) 19.03.05
  • thymleaf dialect template 설정완료 19.03.05
  • spring security 기본 설정완료 19.03.06
  • resources(css,js 등의 파일을 담은곳) 경로를 찾지 못하는 문제해결19.03.07
  • spring security + mybatis login 설정 작업중 19.03.08~
  • 기본 layout design 설정완료 19.03.08

2. 알고리즘

  • do it! 자바 자료구조와 함께 배우는 알고리즘! 1장 학습완료

3. 기술면접

  • 함수형 프로그래밍이란 무엇인가?
  • 이것이 자바다 2장 복습

함수형프로그래밍란?

|

1) 함수형 프로그래밍이란?

  • 함수형 프로그래밍은 프로그램 패러다임중의 하나입니다. 절차지향 -> 객체지향 -> 함수지향 순으로 패러다임이 달라졌습니다.

2) 객체지향 프로그램과 비교

  • 객체지향 프로그래밍이 데이터형을 설계한후 데이터 형에 맞는 메서드를 붙여 가는 식이라면, 함수형 프로그래밍은 함수로 로직을 설계한 후 데이터 형에 맞는 메서드를 붙여 가는 식입니다.
  • 함수형 프로그래밍은 각기 다르게 생긴 데이터 형 또한 지원이 가능합니다. 때문에 하나의 함수가 처리 할 수 있는 데이터형이 끝이 없습니다
  • 함수형 프로그래밍에서는 객체지향처럼 user인지 comment인지 post인지는 상관이 없습니다
  • 모두 처리할 수 있는 아주 높은 다형성을 가진 함수를 만드는 방식으로 프로그래밍을 합니다
  • 객체지향처럼 계층구조의 상속이나 인스턴스 생성으로 기능을 공유하는게 아닌, 여러개의 함수를 조합해서 또다른 기능을 만들 수 있습니다.
  • 추상화의 정도가 매우 높기 때문에 데이터 형이 코드에 등장하지 않고, 데이터 구조에 종속되는 일이 거이 없습니다.
  • 이런점들 때문에 코드가 짧고 코드의 모양이 단순합니다.

3) 장점

  • 부작용이 없다
  • Thread-safe
  • 테스트가 편리하다
  • 로직에 집중할 수 있다

4) 단점

  • 기본적인 학습곡선이 높다, 객체지향에서 -> 함수지향으로 넘어가는게 쉽지 않다.
  • 인력이 부족하다

TIL 금일 공부

|

1. SPRING BOOKMARK 프로젝트 진행상황

  • 개발스펙 : java 8, spring 5, mybatis, mysql
  • 테이블 관계설정 및 생성 ( 1차 완료 ) 19.03.04
  • xml 설정 작업중 ( thylemeaf, tomcat 설정완료, lombok ) 19.03.04
  • mybatis 설정 ( Junit 테스트완료 ) 19.03.05
  • thymleaf dialect template 설정완료 19.03.05
  • spring security 기본 설정완료 19.03.06
  • resources(css,js 등의 파일을 담은곳) 경로를 찾지 못하는 문제해결19.03.07

TIL 금일 공부

|

1. SPRING BOOKMARK 프로젝트 진행상황

  • 개발스펙 : java 8, spring 5, mybatis, mysql
  • 테이블 관계설정 및 생성 ( 1차 완료 ) 19.03.04
  • xml 설정 작업중 ( thylemeaf, tomcat 설정완료, lombok ) 19.03.04
  • mybatis 설정 ( Junit 테스트완료 ) 19.03.05
  • thymleaf dialect template 설정완료 19.03.05
  • spring security 기본 설정완료 19.03.06

OOP란?

|

1) OOP란?

OOP는 프로그래밍에 필요한 데이터를 추상화하여 객체로 만들고, 객체의 상호작용을 프로그래밍을 로직을 구현하는 방식이다

2) OOP의 장점

캡슐화 : 내부의 구현은 감추고, 모듈내에서 응집도를 높이며, 외부로의 노출을 최소화하여 모듈 간의 결합도를 떨어뜨리는 개념이다( 유지보수는 쉬워지고, 재사용성이 높아진다 )

상속 : 상속을 사용하면, 기존에 만들어둔것을 재사용할 수 있다. 예를 들면, 사람이라는 클래스가 있고 성격, 키 메소드를 상속받는 남자, 여자가 있을 수 있다. 상속을 통해서 재사용성이 높아지고, 같은 코드를 반복하지 않을수 있다.

다형성 : 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 사용할 수 있다. 이를 오버로딩이라고 한다.

접근제어 : private, protected, public 키워드를 통해서 데이터간의 접근을 제한하여 프로그램간의 데이터를 변조할수없게 막고, 높은 시스템보안을 제공한다

3) OOP의 단점

암시적 공유 : 의도하지 않았으나, 상속을 함으로써 부모클래스는 몰라도 자식클래스는 부모클래스없이는 아무것도 아닌 클래스가 된다. 이는 자식클래스의 부모클래스에 대한 의존도와 결합도를 높이기 때문에 객체지향의 핵심중 하나인 재사용이 힘들어진다.

단일체 : 단 하나의 부모만 존재한다. 추가적인 기능구현으로 클래스의 덩치가 무한대로 커질 수 있다. 확장을 하기 위해서는 해당 클래스를 상속받고 그 클래스에서 기능을 추가해야 하기 때문이다.

클래스타입 관계 문제 : 자식이 부모클래스를 상속받을 경우에는 상관이 없으나, 부모가 자식클래스의 메소드를 사용하고 싶다고 사용할 수가 없다. 복잡한 상속구조를 가진 클래스를 참조 또는 연산할 경우 부모 클래스에서 자식클래스를 사용하고 싶을 경우에는 down-cast를 사용할 수 밖에 없다.