[패스트캠퍼스] 자바&스프링 강의 4주차

YunGyu Choi·2023년 7월 8일
0

FastCampus JavaSpring

목록 보기
4/8

웹 개발 역량강화를 위해 내일배움카드로 수강할 수 있는 백엔드 교육과정을 찾아보았다. 남궁성&박매일 님의 '나도 할 수 있는 Java & Spring 웹 개발 종합반'이 교육일정이나 커리큘럼이 무난한 것 같아서 수강하게 되었다. 8주 총 65시간의 과정을 포스팅하고자 한다.

커리큘럼

주차학습 내용
1주차생각,표현,코딩하기란?
2주차Java 기초 다지기1
3주차Java 기초 다지기2
4주차객체지향 프로그래밍 시작하기
추가1객체지향 프로그래밍 설계하기
5주차Spring 시작하기
6주차Spring MVC part1
7주차Spring MVC part2
8주차Spring MVC part3
추가2Spring DI 와 AOP
파이널 프로젝트

객체지향 프로그래밍 시작하기

사용자 정의 자료형의 이해

기본 자료형이외의 다른 데이터를 변수에담고자하면 사용자정의 자료형을 만들어야 한다. 이때 생성된 클래스 객체를 바구니라는 의미에서 Model이라고도 하고 덩어리라는 의미에서 VO;Value Object라고도 하고 DTO;Data Transfer Object라고도 한다. 데이터를 변수에 담아서 옮긴다는 의미이다.

이 객체는 같은 자료형만을 원소로 갖는 배열과 달리 이절적인 자료형을 원소로 가질 수 있다.

클래스

클래스는 새로운 자료형을 만드는 도구 즉, 객체를 설계=모델링 하는 도구이다.
클래스는 접근제어자를 선언해줘야한다. 또한 클래스 내 변수 안에도 접근 제어자를 선언해줘야한다.

객체지향 측면에서 클래스는 현실세계에 있는 객체를 객체지향 프로그램에서 사용하기 위해 객체의 상태정보(멤버변수)와 행위정보(멤버메서드)를 뽑아서 설계하는 도구가 된다.

객체가 생성자로 생성되어 메모리에 올라가면 인스턴스라고 한다.

클래스(모델)의 종류

1) DTO; Data Transfer Obejct / Value Object

  • 데이터를 담는 모델(이동)
  • 데이터를 이동시키기 위해 하나로 묶어야될 경우 사용

2) DAO; Data Access Object

  • 데이터를 처리하는 모델(DB), 데이터 베이스에 저장되어 있는 데이터 처리
    대부분 CRUD 처리, 데이터베이스와 관련하여 저장, 수정, 검색, 삭제기능 수행

3) Utility(Helper Object)

  • 반복적으로 사용해야 될 동작(기능)을 별도의 클래스로 만들어 놓고 필요할 때 사용하는 클래스
  • Utility, Helper, Facade(도움을 주는 클래스들)
  • 날짜, 통화, 시간 정보 획득 기능 / 인코딩(한글깨짐) 기능 등
  • 반복되는 기능(메소드)들로 이러우져 있다.

접근 제어자(Access Modifier)

  • public : 모든 패키지에서 아무 제약없이 접근 가능
    (클래스는 다른 곳에서 사용하려고 만든거니까 public많이 쓰고 클래스 내부 멤버 메서드도 public 많이 쓴다. 그러나 멤버 변수는 private을 쓰기도 한다.)
  • private : 모든 패키지에서 접근 불가
  • protected : 상속 관계에서 하위 클래스에서 상위 클래스 접근 가능
  • default : 동일한 패키지에서만 접근 가능 (선언하는건 아니거 디폴트값)

패키지

  • 서로기능이 비슷한 클래스들끼리 모아서 관리를 쉽게 하기 위해서 사용
  • 패키지가 가지고 있는 클래스를 한겹 감싸고 있다.
  • 패키지 안의 클래스는 기본적으로 패키지 밖에서는 접근이 안된다. 이것을 패키지의 보안적인 측면이라고한다.
  • 자바에서 제공해주는 API도 패키지의 형태로 배포된다.(2단계 패키지로 구성)
    • java.lang : 자바에서 자주 사용하는 클래스(String, System 등) 이건 default pacakge이다.
    • java.io : 입출력 관련 클래스(InputStream 등)
    • java.net : 네트워킹 관련 클래스
    • java.util : 도움을 주는 클래스(Scanner 등)
    • java.sql : 데이터베이스 관련 클래스
    • java.math : 수학관련 클래스
  • src.zip에는 소스코드가 담겨있고 .jar파일은 class(api)들을 묶어서 담고 있다.

VO클래스

정보은닉

다른 객체에게 자신의 정보를 숨기고 자신의 동작, 기능, 연산만을 통해 접근을 허용하는 것으로, 클래스 외부에서 특정(상태) 정보에 접근을 막는다는 의미

setter 메서드(세팅을 해주는 메서드)

클래스 내부에 존재하는 접근이 제한된 상태 변수를 수정하기 위해서는 해당 클래스의 setter메서드를 통해서 접근한다.
해당 클래스의 메서드는 외부에서 접근이 제한되었다고 하더라도 this로 접근이 가능하기 때문이다.

  • 이름은 set해당멤버변수이름()
  • 접근이 제한된 변수를 this.으로 가리켜서 this.name = name 이런식으로 설정한다.
  • 만약 매개변수로 들어온 것이 접근 제한된 멤버변수와 다르다면 this를 생략할 수 있다.

getter 메서드(내용 받아오는 메서드)

클래스 내부에 접근이 제한된 상태 변수의 내용이 밖으로 내보내기위해 해당 클래스의 getter메서드를 통해서 내보낸다.
해당 클래스의 메서드는 외부에서 접근이 제한되었다고 하더라도 this로 접근이 가능하기 때문이다.

  • 이름은 get해당멤버변수이름()
  • 역시 접근 제한된 메서드에 대해 출력할 때 return this.해당변수이름으로 출력한다.

setter 와 getter는 한 쌍으로 되어 있어야 접근이 제한된(정보 은닉)된 메서드에 접근이 가능하다.

생성자 이용한 객체 초기화

생성자 메서드를 통해서 접근이 제한된 멤버변수의 값을 저장하고 초기화가 가능하다.
생성자를 오버로딩하여 원하는 값으로 초기화가 가능하다.
만약 오버로딩하게되면 기본생성자는 명시하지 않으면 자동 생성되지 않는다. 따라서 기본 생성자가 필요하다면 명시해줘야한다.

toString() 메서드로 객체 값 출력

getter를 쓰면 멤버변수당 하나가 있어서 멤버변수가 여러개면 여러번 반복해야한다.
toString()이라는 메서드를 만들어서 객체가 가지고 있는 값 전체를 문자열의 형태로 리턴 받을 수 있다.

잘 설계된 VO클래스

  • 모든 상태정보를 정보 은닉하기
  • 디폴트 생성자를 반드시 만들기
  • 생성자 메서드를 오버로딩 하여 객체 초기화 하기
  • setter 메서드 만들기(값 저장 용도)
  • getter 메서드 만들기(값 얻을 용도)
  • toString 메서드 만들기(객체가 가지고 있는 전체 값 출력 용도)

배열

배열의 선언

기본자료형 뿐만아니라 사용자정의 자료형(클래스)도 배열을 만들 수 있다.
배열은 동질적인 자료형의 나열이기 때문이다.

느낀점

정보처리 기사에서 공부할 때 쏟아지는 전문 용어들 단축어를 보고 이게 뭐지 싶었던 용어들이 있다. VO, DTO, DAO등이 그것이다. 그런 것들에 대한 설명을 쉽게 풀어주어서 이해하는데 도움이 많이 되었다.

profile
velog에는 이론을 주로 정리하고, 코드와 관련된 것은 Git-hub로 관리하고 있어요. 포트폴리오는 링크된 Yun Lab 홈페이지를 참고해주시면 감사하겠습니다!

0개의 댓글