자바 웹 개발 과정 5주차🌞

Let's TECH🧐·2021년 3월 27일
0

자바 웹 개발 과정

목록 보기
2/31
post-thumbnail

뉴렉처 강사님의 국비지원 강의를 들으며 매주 공부한 내용을 포스팅으로 남기고 있다.
강의를 듣기 시작한 지 얼마 되지 않은 것 같은데 벌써 5주차라니...!
5주차에는 또 어떤 내용을 배웠는지 복습하는 시간을 가져보자🙂

Back-end

구조화된 프로그래밍을 위해 함수 정의하기

1. 절차를 자르는 도구인 함수의 특징

  • 직접 사용 차단: 인터페이스 역할
  • 작게 나누어서 사용
  • 코드 집중화: 특정 함수의 코드 수정 시, 해당 함수를 사용한 다른 함수에서도 변경 사항이 적용됨
  • 코드 재사용: 다른 곳에서도 코드를 쉽게 재사용할 수 있음

2. 자바에서 함수를 정의하고 사용하는 방법

  • 매개변수 입력 시 자료형과 함께 입력하기
  • return할 값의 자료형도 함수 이름 앞에 명시하기
static int add(int x, int y) {
	return x + y;
}

데이터를 얻는 코드와 데이터를 출력하는 코드 분리하기

// 1. 검사진행자 수가 가장 많았던 날을 얻는 코드
    static String getDate(String[][] rows, int count) {
      int index = 0;
      String date = ""; 
      int max = getMax(rows, count);

      for(int i=0; i<count; i++) {
        if(Integer.parseInt(rows[i][3]) == max) {
          index = i;
          break; // max를 찾았으면 그 위치에서 끝나게 하기
        }
      }

      date = rows[index][0];
      return date;
    }

// 2. 검사진행자 수가 가장 많았던 날을 출력하는 코드
    static void printDate(String[][] rows, int count) {

      String date = getDate(rows, count);

      System.out.printf("검사진행자 수가 가장 많았던 날: %s\n", date); 
      System.out.println();	
    }

함수를 재사용하는 방법

1. 함수 재사용의 의미

  • 소스코드를 컴파일했을 때 만들어지는 실행 코드를 가져와 재사용한다는 것을 뜻함
  • 같은 Project 안에 있는 다른 클래스에서 함수를 재사용하는 방법
    사용하고자 하는 함수가 위치하는 클래스를 함수 앞에 명시
LottoProgram.gen(); // LottoProgram - 사용하고자 하는 함수가 위치하는 클래스
LottoProgram.sort(lotto);
  • 다른 Project에서 함수를 재사용하는 방법
    원본 함수가 위치하고 있는 class 파일을 외부에 내보내기 위해 JAR 파일로 압축해주는 과정이 필요하다.
    [원본 함수가 위치하는 프로젝트 오른쪽 마우스 클릭 -> Export -> JAR 파일 -> 원하는 위치 설정]

    함수를 재사용하기 위해 JAR 파일을 내가 사용하고자 하는 프로젝트로 가져온다.
    [사용하고자 하는 프로젝트 오른쪽 마우스 클릭 -> Build Path -> Configure Build Path -> Add External JARs -> export한 JAR 파일 클릭]


    2. 함수 안에서 구조체를 사용했을 때 발생하는 문제점
int[] lotto = null; // 내가 생각하는 lotto를 기본 형식으로 쓰게 되면 lotto의 의미를 제대로 표현하기 힘듦
Lotto lotto = null; // 더 의미있는 개념 단위의 데이터로 묶어서 쓰자

-> 이렇게 되면 고립화되어야 할 함수에서 구조체 속 인스턴스 변수의 변화에 따라 함수 속 코드의 내용도 변화하게 된다는 큰 문제점 발생
-> 이걸 해결할 방법은 바로 캡슐화이다!

캡슐화

1. 캡슐화

  • 연관 있는 변수와 함수를 클래스로 묶는 작업
  • 데이터에 수정 사항이 생겼을 때 클래스 내에 있는 캡슐화된 코드에서만 오류가 생기기 때문에 오류의 범위가 한정된다는 장점이 있다.
  • 캡슐화에는 은닉성이란 것이 있어서 클래스에 담는 내용 중 중요한 데이터나 기능을 외부에서 접근하지 못하게 할 수 있다.

2. 캡슐을 깨지 못하게 하는 도구: 접근 제어 지시자

  • private: 동일 클래스 O, 외부 클래스 X
  • public: 동일 클래스 O, 외부 클래스 O

객체지향 프로그래밍

1. 객체지향

  • 지금까지는 함수가 앞세워지고 데이터가 뒤로 밀려나도록 코드를 작성했다.
    함수지향: ex. Lotto.sort(lotto);
  • 좀 더 사람에게 직관적인 코드를 작성하는 게 어떨까라는 생각에서 출발한 객체지향 프로그래밍
    객체지향: ex. lotto.sort();

2. 객체지향적으로 코드 작성하기

// Program.java
// 로또 정렬하기
lotto.sort(); 

// ---------------------------------------------

// Lotto.java
public void sort() { // static 키워드를 삭제하고, 매개변수에 전달해줬던 Lotto 객체도 삭제
	for(int i=0; i<this.size-1; i++) // 객체를 명시하는 대신 this로 변경, this는 생략 가능	
		for(int j=0; j<this.size-1-i; j++) 			
			if(this.nums[j] > this.nums[j+1]) {
				int temp;
				temp = this.nums[j];
				this.nums[j] = this.nums[j+1];
				this.nums[j+1] = temp;
			}	
}

Front-end

CSS - grid 속성

1. 너비에 맞춰서 grid 그리기

  • 고정 개수로 맞추기
    grid-template-columns: 1fr 1fr;
  • 고정 크기로 맞추기
    grid-tempate-columns: 100px 100px 100px;

2. 아이템에 맞춰서 grid 그리기

grid-template-columns: repeat(auto-fit, minmax(100px, auto));
grid-template-rows: repeat(auto-fit, 100px);

3. grid에서 아이템을 정렬하는 방법

  • inline축(수평) 정렬
    a. justify-content: 행(row) 축을 따라 그리드를 준 박스 자체를 정렬한다.

    b. justify-items: 행(row) 축을 따라 그리드 아이템 내부 콘텐츠를 정렬한다.

    c. justify-self: 행(row) 축을 따라 그리드 아이템 내부 콘텐츠들의 정렬 위치를 각각 정해줄 수 있다.
  • block축(수직) 정렬
    a. align-content: 열(column) 축을 따라 그리드를 준 박스 자체를 정렬한다.

    b. align-items: 열(row) 축을 따라 그리드 아이템 내부 콘텐츠를 정렬한다.

    c. align-self: 열(row) 축을 따라 그리드 아이템 내부 콘텐츠들의 정렬 위치를 각각 정해줄 수 있다.

CSS - font 속성

font 속성은 font-family, font-size, font-style, font-weight 등의 단축 속성이다.

  1. font-family: 원하는 글꼴을 지정할 때 사용
  2. font-size: 글꼴의 사이즈 지정 시 사용
  3. font-style: 글꼴체 지정 시 사용
    normal, oblique(기울임), italic(이탤릭), inherit(부모 태그의 값)
  4. font-weight: 글자 굵기 지정 시 사용
profile
Minju's Tech Blog

0개의 댓글