[TIL] 250224 - 6일차

YJin·2025년 2월 24일

0. 오늘의 학습 키워드

  • Java 개념 정리 (기초 문법, 객체지향)
  • Git 2차 특강
  • TIL 회고 특강

1. Java

자바의 특징

① 플랫폼 독립성
: Java 언어 --> 바이트코드로 컴파일 후, JVM(자바 가상 머신)이 설치된 환경이라면 어디서든 실행 가능

② 객체 지향
: 객체 지향적 언어 (모듈, 클래스, 메소드 etc.)

③ 거대한 생태계
: 전세계적으로 활성화된 개발 커뮤니티

향상된 for문

for(배열의요소 : 배열) {
		명령문;
}

예시)

int[] array = {10, 20, 30, 40};

for(int a : array) {
	System.out.println("배열 요소 순회: " + a);
}

객체 (Object)

: 현실에 존재하는 사물. ex) TV, 냉장고, 사진기

클래스

: 객체를 만들기 위한 설계도. 클래스를 따라 만들어진 객체들은 서로 독립적이다.

클래스의 3요소

① 필드(속성)
: 객체가 가지는 고유 데이터. 클래스가 가지는 변수. ex) 사람의 나이, 자동차의 브랜드

② 메소드
: 객체의 기능(동작). ex) 사람 - 걷기/뛰기, 비행기 - 이륙하기/착륙하기

③ 생성자
: 생성자를 통해 클래스를 객체화(실체화). 객체를 만들 때 특정 값을 넣어주기도 함.

Student student1 = new Student("James", 18);
  • 클래스 명과 이름 동일
  • 반환 자료형 X
  • 여러 개 존재 가능

인터페이스

: 표준 설계도. 모든 클래스가 가져야 할 기본적인 내용들을 담는다.
인터페이스로는 객체를 생성할 수 없으며, 클래스로 구현이(implements) 필요하다.

객체지향

① 캡슐화
: 서로 연관있는 속성과 기능을 객체로 묶어 외부로부터 보호함. Java에서는 접근 제어자를 통해 달성 가능하다.

  • 데이터 보호 : 외부로부터 클래스에 정의된 속성과 기능을 외부의 직접 접근으로부터 보
  • 데이터 은닉 : 내부 동작을 감추고 외부에 필요한 부분만 공개

② 다형성
: 객체의 메소드가 여러가지 형태를 가질 수 있음

  • 오버라이딩(Overriding): 부모 클래스에서 물려받은 메소드를 자식 클래스에서 재정의하는 것
class Animal {
    void makeSound() {
        System.out.println("소리 내기");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("멍멍");
    }
}
  • 오버로딩(Overloading): 동일한 클래스 내에서 메소드의 이름은 동일하지만, 매개변수의 개수나 타입을 다르게 정의하는 것
class Calculator {
    int add(int a, int b) {				// 기본형
        return a + b;
    }

    double add(double a, double b) {  // 매개변수 타입 다름
        return a + b;
    }

    int add(int a, int b, int c) {  // 매개변수 개수 다름
        return a + b + c;
    }
}

③ 상속
: 기존에 구현한 클래스(부모 클래스)를 재활용하여 사용 가능.
--> 코드의 재사용성이 높아짐.

④ 추상화
: 클래스의 핵심 공통 요소만 추출하여 상위 클래스(or 인터페이스)로 만드는 것.
--> 계층적 구조 특징을 통해 유지보수성이 좋은 프로그래밍 가능

Java에서는 추상 클래스, 인터페이스를 통해 달성 가능하다.

2. Git 사용법 2차

git branch <브랜치이름> : 복사본, 새로운 분기점 생성.
git merge <병합할 브랜치 이름> : 다른 브랜치와 현재의 브랜치를 병합(합치기)

예시) dev 브랜치와 feat 브랜치를 merge 하는 경우

git branch // 현재 브랜치 확인, feat 브랜치라고 가정
git checkout dev // feat 브랜치 --> dev 브랜치로 이동
git merge feat // 현재 브랜치(dev)에 feat 브랜치의 내용을 병합



Pull Request

Git merge 보다는 원격에서 PR(Pull Request)를 통해 병합

예시) 새로운 기능 개발
1. 기능 브랜치 생성 및 코드 작성
2. Git add, commit, pull, push
3. Pull Request 생성 및 코드 리뷰

Github에서 Pull Request를 생성하여 요청하면, 팀장(owner)나 팀원들이 코드 리뷰를 통해 요청을 승인하거나 변경 요청을 하여 충돌 없이 원격 저장소에 병합되도록 함.


만약 충돌 발생 시, 가능한 로컬에서 해결한 뒤 다시 Pull Request를 요청하는 것이 좋음.


Github에는 다양한 Pull Request 관련 옵션 (일정 이상 승인 시 PR 승인, 특정 인원만 승인 가능), 원격 브랜치 보호 옵션이 있으므로 활용하면 좋음.

그외 : 팀 프로젝트 시작 시 팀장은 간단한 코드와 함께 프로젝트를 생성하여 github에 올린 뒤, main이 아닌 dev 브랜치를 디폴트 브랜치로 설정하여 브랜치를 분리하는 것이 좋음.

profile
백엔드 개발도 락이다

0개의 댓글