목록Language (20)
코딜기
final이란?'final' 키워드는 무언가를 제한하는 의미를 가지며, 변수, 메서드, 클래스에 적용될 수 있습니다.'final'이 어디에 선언되느냐에 따라 그 의미가 달라집니다.final + 변수 : 변수가 한번 초기화되면 값을 변경할 수 없고, 상수처럼 작동합니다.final + 메서드 : 메서드를 재정의할 수 없고, 상속된 클래스에서도 더 이상 오버라이드되지 않습니다.final + 클래스 : 클래스를 상속할 수 없고, 더 이상 확장이 불가능하며, 다른 클래스가 이 클래스를 기반으로 파생될 수 없습니다.final 사용 (필드)Person라는 클래스를 하나 만들고 내부에 인스턴스 변수와 'final' 키워드를 사용한 변수를 추가하겠습니다.'final' 변수는 반드시 선언과 동시에 초기화되거나 생성자를 통..
static이란?static이라는 키워드는 필드와 메서드에 붙일 수 있습니다.모든 객체가 공유해도 문제가 없는 필드나 메서드에 붙입니다.객체에 소속된 멤버가 아니라 static이 저장되는 공간이 따로 있다고 생각하면 이해가 쉬울 것입니다.static 사용 (필드)간단한 예제 코드로 static을 사용해 보겠습니다.Count라는 클래스를 하나 만들고 내부에 변수 두 개를 선언하는데, 하나에만 static을 추가하겠습니다.public class Count { public int a; //인스턴스 필드 public static int b; //정적 필드}이후 main 메서드에서 Count 객체를 생성한 후에 값을 변경해 보겠습니다.Count c1 = new Count();c1.a += 5;c1.b ..
캡슐화(Encapsulation)란?캡슐화란 객체의 상태와 동작을 하나의 단위로 묶어서 구현하는 것을 의미합니다.즉, 하나의 목적을 이루기 위해 관련 있는 모든 것들을 하나의 캡슐에 담아 두는 것을 의미합니다.캡슐화를 고려하지 않았을 때의 비효율성차에 시동을 거는 과정을 각각의 public 메서드로 정의를 했습니다.public class Car { // 시동 거는 기능 public void engineStart() { System.out.println("시동 버튼을 눌렀습니다."); System.out.println("시동이 걸렸습니다."); } // 엔진오일이 주입되는 기능 public void injectOil() { System.out..
정보은닉(Infomation Hiding)이란?정보 은닉이란 객체의 상태를 숨기고 외부에서 접근할 수 없도록 보호하는 것을 의미합니다.정보 은닉을 사용하면, 객체의 필드에 불필요한 값이나 문제가 발생할 수 있는 값들이 직접 들어오는 것을 막을 수 있습니다.그렇기 때문에 접근 제한자를 적절하게 이용하여 직접적인 접근을 막고, 메서드를 통해 접근하게 하는 것이 정보 은닉입니다.정보은닉을 고려하지 않았을 때의 문제점public class Car { String model; // 모델명 int speed; // 현재 속도 public Car(String model) { this.model = model; }}위와 같은 Car 클래스가 있고, 이를 통해 Car의 속성을 가진 테슬..
생성자(Constructor)란?자바에서 객체를 생성할 때 호출하는 것이 생성자입니다.한마디로 생성자는 객체를 생성하는 역할을 합니다.생성자의 특징생성자의 이름은 클래스의 이름과 대/소문자까지 완벽하게 동일해야 합니다.객체를 생성할 때 반드시 호출해야 합니다.일종의 메서드지만, 리턴 타입이 없고 리턴값은 주소값으로 고정되어 있습니다.생성자를 하나도 선언하지 않으면, JVM이 매개변수가 없고, 내용이 없는 가장 기본 형태의 생성자를 하나 생성해 주기 때문에 생성자 선언 없이도 객체 생성은 가능합니다.객체를 생성하는 기능뿐만 아니라, 객체 생성과 동시에 해야 할 일 (필드 초기화) 등을 진행할 수 있습니다.생성자는 오버로딩(Overloading)이 가능합니다.생성자 사용펜 객체를 만드는 클래스를 정의하고, ..
객체(Object)란?객체란 데이터와 그 데이터를 처리하는 함수들을 묶어놓은 하나의 독립적인 단위입니다.객체를 사용하면 코드의 가독성이 좋아지고 유지보수가 편리해집니다.또한 객체 지향 프로그래밍은 코드 재사용성이 높아지고 대규모 프로그램을 개발할 때 유용합니다.객체를 사용하지 않았을 때의 비효율성색깔, 품번, 가격의 속성을 가지고 있는 펜을 제작한다고 가정합니다.빨간 펜, 파랑 펜, 검정 펜을 만들기 위해서는 아래와 같이 각각 변수명을 다르게 해서 만들어야 합니다.//빨간 펜int redPenPrice = 500;String redPenColor = "빨강";String redPenNo = "a001";//파랑 펜int bluePenPrice = 800;String bluePenColor = "파랑";..
가변 파라미터란?Java에서 메서드를 호출할 때 파라미터 입력을 유연하게 해주는 파라미터입니다.매서드 호출 시 전달되는 인자의 개수를 동적으로 변경할 수 있습니다.콤마로 나열되어 들어오는 여러 개의 값을 배열로 묶어서 내부로 전달합니다.가변 파라미터는 반드시 메서드의 마지막 파라미터여야 합니다.즉, 다른 파라미터가 있으면, 가변 파라미터는 마지막에 와야 합니다.콤마로 나열하기 때문에 맨 뒤가 아니면 끝이 어디인지 모르기 때문입니다.가변 파라미터 사용static int calcNumberTotal(int... nums) { int total = 0; for(int i : nums) { total += i; } return total;}입력받은 숫자의 누적 합을 구하는 메서드를 만들었고, 매개변수로 i..
Python Jinja 템플릿이란?문서(파일)에서 특정 양식으로 작성된 값을 런타임시 실제 값으로 치환해 주는 처리 엔진입니다.템플릿 엔진은 여러 솔루션이 존재하며 그중 Jinja 템플릿은 파이썬 언어에서 사용하는 엔진입니다.파이썬 기반 웹 프레임워크인 Flask, Django, Airflow에서 주로 사용됩니다.Jinja 템플릿 사용하기아래와 같이 템플릿을 만들어주면, 만든 양식에 맞게 호출하여 간단하게 사용할 수 있습니다.
Python 데코레이터란?함수나 메서드에 적용되어, 해당 함수나 메서드의 기능을 확장하거나 변경하는 역할을 합니다.데코레이터는 일반적으로 @기호와 함께 사용되며, 함수 또는 메서드 위에 위치합니다.기존에 있는 함수에 새로운 기능을 추가하고 싶다면?아래 로직은 get_data 함수 실행 전과 후에 print문을 추가하기 위한 로직입니다.아래와 같은 방식을 사용한다면 수정할 함수를 찾아 직접 수정을 해줘야 합니다.예를 들어 100개의 함수에 똑같은 print문을 추가하고 싶다면 100개의 함수를 하나하나 수정해줘야 합니다.데코레이터 사용데코레이터를 사용한다면 @기호 하나로 복잡한 코드를 간소화시킬 수 있습니다. 아래와 같은 방식을 사용한다면 수정할 함수를 찾아 직접 수정을 해줄 필요가 없습니다.여러 개의 ..
파이썬 가상환경이란?프로젝트를 진행할 때 사용되는 라이브러리의 버전 충돌 방지를 위해 파이썬 인터프리터 환경을 격리시키는 기술입니다.파이썬은 지속적으로 업데이트가 되기 때문에 프로젝트 진행시기에 따라서 사용되는 버전이 상이한 경우가 많습니다.가상환경(venv)을 통해 상이한 라이브러리 버전을 사용하는 여러개의 프로젝트를 관리할 수 있습니다.파이썬 가상환경 생성 및 접근1. 우선 프로젝트 경로에서 파이썬 버전을 확인합니다.-> 파이썬이 설치되어 있는지 확인2. 파이썬이 정상적으로 설치되어 있다면 아래의 명령어를 통해 가상환경 세팅을 해줍니다. 정상적으로 실행이 되었다면 현재 경로에 venv라는 폴더가 생성된 것을 볼 수 있습니다.python -m venv ./venv 3. vscode의 Help - ..