본문 바로가기

전체 글262

[Git] Git 브랜치 전략 (feat. Git Flow) 브랜치브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다. 개발자들이 협업을 진행할 때 동일한 소스코드를 함께 공유하고 다룬다. 여기서 어떤 사람은 버그를 수정하고, 어떤 사람을 기능을 개발하기도 한다. 동일한 코드를 여러 사람이 다른 작업을 할 때 서로 다른 버전의 코드가 만들어진다. 이 때 동시에 여러 작업을 할 수 있도록 Branch(브랜치)를 사용한다. 분리된 작업 영역에서 수정을 하고 나중에 원래 버전과 비교해서 하나의 새로운 버전을 만든다. 이러한 브랜치 전략들을 정리했다.Git 브랜치 전략그런데, 이런 좋은 브랜치도 규칙 없이 마구잡이로 사용하면 혼란을 불러올 수 있다. .. 2024. 9. 21.
함수형 프로그래밍 명령형 프로그래밍 VS 선언형 프로그래밍명령형 프로그래밍프로그래밍의 상태와 상태를 변경시키는 구문의 관점으로 접근하는 프로그래밍 방식.명령형 프로그래밍은 컴퓨터가 실행할 명령들을 실행 순서대로 구현해야 한다.대부분의 객체 지향 프로그래밍 언어가 명령형 프로그래밍 언어이다. 알고리즘 처리 작업에 적합한 언어이다.절차지향 프로그래밍, 객체지향 프로그래밍이 이에 속한다. 예시) point를 얻기 위해 실행할 명령들을 순서대로 구현fun getPoint(customer: Customer): Int { for (i in 0..customers.size) { val c = customers[i] if (customer == c) { return c.point .. 2024. 6. 16.
[OOP] 객체지향의 4대 특징 - 캡슐화, 추상화, 상속, 다형성 캡슐화연관된 데이터(변수)와 기능(메소드)을 하나로 묶고, 불필요한 요소를 외부에 노출되지 않도록 설계하는 방식을 뜻한다. 자바에서는 접근 제어자(public, private, default, protected)를 통해 캡슐화를 구현할 수 있다.class Student { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { .. 2024. 6. 10.
[Java] 기본타입 vs 참조타입 기본 타입 vs. 참조 타입자바의 데이터 타입에는 크게 기본 타입과 참조 타입이 있다. 기본 타입 (primitive type)정수 타입, 실수 타입, 논리 타입정수, 실수, 문자, 논리 리터럴을 저장하는 타입이다.기본 타입은 변수에 실제 값(리터럴)을 저장한다.int age = 24; 참조 타입 (reference type)배열, 열거, 클래스, 인터페이스객체(Object)의 번지를 참조하는 타입이다.참조 타입은 변수에 객체의 번지(객체가 생성될 때 갖는 주소값)를 저장한다.변수는 번지를 통해 객체를 참조한다.String hobby = "공부"; 차이점모든 변수는 스택 영역에 저장된다.단, 타입에 따라 데이터가 생성되고, 저장되는 위치는 다르다.◾️ 기본 타입 변수: 스택 영역에 변수가 생성되고, 변수.. 2024. 6. 10.
[Java] 추상 클래스 vs 인터페이스 추상 클래스(Abstract Class)개념abstract 키워드로 선언된 클래스최소 한 개의 추상 메서드를 포함하는 경우 반드시 추상 클래스로 선언해야한다.그러나 추상 메서드가 하나도 없는 경우라도 추상 클래스로 선언할 수 있다. 추상 클래스의 구현서브 클래스에서 슈퍼클래스의 모든 추상 메서드를 오버라이딩하여 실행가능한 코드로 구현한다. 추상 클래스의 목적객체(인스턴스)를 생성하기 위함이 아니며, 상속을 위한 부모 클래스로 활용하기 위한 것이다.여러 클래스의 공통된 부분을 추상화(추상 메서드)하여 상속받는 클래스에게 구현을 강제화하기 위한 것이다. (메서드의 동작을 구현하는 자식 클래스로 책임을 위임)즉, 추상클래스의 추상메서드를 자식 클래스가 구체화하여 그 기능을 확장하는 데 목적이 있다.추상 클래스.. 2024. 6. 10.
[Java] 오버라이딩 vs 오버로딩 자바의 꽃이라 불리는 클래스(class) 문법의 정말 주요 개념, 오버라이딩(overriding)과 오버로딩(overloading)에 대해 살펴본다.이 둘의 공통점은 클래스의 인스턴스 멤버인 메소드를 재정의 또는 확장의 개념이다. 아주 간단히 차이점을 꼽자면 오버라이딩(overriding)은 부모 클래스의 상속을 받은 자식 클래스에서 확장하는 개념, 오버로딩(overloading)은 하나의 클래스 내부에서 확장하는 개념이다. 본격적으로 이 두가지 개념에 대해 파헤쳐보자.1. 오버라이딩(overriding)상속 받은 자식 클래스는 부모 클래스가 물려준 메소드를 곧이 곧대로 따라야만 하는가?자식 클래스에서 물려 받은 메소드를 조금 변형해서 사용하고 싶다면, 이 오버라이딩을 사용하여 자유롭게 기능을 추가 또는.. 2024. 6. 10.