~2023.02/외부교육

    [JAVA] MVC 패턴

    지금까지는 한가지 목적에 맞춰서 한 개의 클래스에 모든 것들을 만들었다. 하지만 이제부터는 한가지 목적을 위해 여러 종류의 클래스를 사용하게 된다. 예를 들어 게시판 프로그램의 경우에는 "회원기능"이라는 측면과 "게시판"이라는 측면 두가지 분야로 나뉘고 거기에 맞춰 여러가지 클래스를 준비해주어야 한다. 만약 여러 분야가 있는 프로그램을 하나의 클래스 안에 모두 다 적을 경우, 한 분야의 유지보수를 하려면 그 전체 프로그램을 모두 다 뜯어 봐야 할 것이다. 또한 이렇게 통째로 만들어진 프로그램은 코드의 재사용성 측면에서 매우 부족한 모습을 보인다. 만약 목적에 맞추어 클래스를 나누면 특정 분야의 클래스들만 다른 곳에서 재사용하는 것도 가능하다. 객체지향의 5가지 원칙 SOLID S : Single Resp..

    [JAVA] 콜렉션(Collection)

    1. 콜렉션 자바는 내부적으로 여러 개의 같은 데이터 타입의 객체들을 한꺼번에 모아서 제어할 수 있는 "Collection"이라는 개념이 존재한다. 이 콜렉션에 해당하는 클래스들은 모두 공통적으로 "동적 할당"이 구현되어 있다. 콜렉션에 해당하는 클래스들을 크게 나누면 다음과 같다. List : 순서가 존재하고 중복된 객체도 저장 가능하다. Set : 순서가 존재하지만 중복된 객체를 저장할 수 없다. Map : 순서가 존재하지 않고 중복된 객체를 저장할 수 없다. (단, 저장된 객체를 불러올 때는 미리 약속한 "열쇠(key)" 값으로 불러오게 된다. 2. ArrayList 콜렉션에 해당하는 클래스 객체들은 반드시 어떤 클래스 혹은 인터페이스가 모여있는지 적어주어야 한다. 적어주는 방법은 각 데이터 타입 ..

    [JAVA] 객체(Object) & 캡슐화(Encapsulation)

    1. 3세대 언어의 탄생 프로그래밍 언어의 발전 역사를 살펴보면 세대를 관통하는 중요한 키워드가 바로 "코드의 재사용성"이다. 기능을 재사용하는 2세대 절차 지향적 언어가 나왔던 이유는 어제 구현한 기능을 오늘 다시 쓰려고 보니 처음부터 다시 구현해야 하는 귀찮음을 발견했기 때문이었다. 하지만 단순히 기능을 재사용하는 것보다 조금 더 복합적인 개념을 재사용할 수 있는 방법을 생각하게 되었고, 그렇게 3세대 언어인 "객체 지향적 언어(Object Oriented Programming)"이 탄생하게 되었다. 2. 객체란 객체는 클래스의 변수를 뜻한다. 즉 객체 지향 프로그래밍에서는 단순히 데이터를 저장할 구조체 혹은 기능을 단독적으로 재사용하는 것이 아니라 그 모든 것이 합쳐져 있는 클래스 자체를 통째로 재..

    [JAVA] 배열의 동적 할당(Dynamic Allocation)

    1. 동적할당과 정적할당 동적할당이란, 배열의 크기가 고정되어있지 않고 추가하면 늘어나고 삭제하면 줄어드는 형태를 말한다. 배열의 가장 큰 단점은 우리가 맨 처음부터 크기를 특정 지어야 한다는 것이다. 이때 지정된 크기 이상의 값을 넣을 때도 문제가 되고, 반대로 우리가 어디 인덱스가 비어있는지를 찾는 것 또한 문제가 된다. 이런 모든 문제는 배열의 크기가 고정, 즉 "정적 할당(Static Allocation)" 되어있기 때문에 발생한다.

    [JAVA] Call By Valeue(값에 의한 호출) & Call By Reference(참조에 의한 호출)

    1. Call By Value(값에 의한 호출) 값에 의한 호출은 파라미터로 넘어온 값이 실제 값이 아니라 실제 값으로 복사한 값으로 넘어오는 경우이다. 만약 파라미터의 데이터 타입이 기본형 데이터 타입일 경우에는 값에 의한 호출이 발생한다. public class CallBy { public static void main(String[] args) { // 값에 의한 호출 int num = 3; System.out.println(num); // 3 출력 callByValue(num); // 4 출력 System.out.println(num); // 3 출력 } public static void callByValue(int num) { num++; System.out.println(num); } } 3 ..

    [JAVA] 메서드(Method)

    1. 메서드 메서드란, 우리가 일종의 코드를 압축시킨 축약어를 만들어서 그 축약어를 적으면 미리 설정한 코드가 차례대로 실행되는 것이다. 예를 들어 어떤 프로그램의 단축키를 누르면 해당 단축키에 설정되어있는 기능이 실행되듯 우리가 그러한 단축키를 만들게 되는 것이다. 메서드는 선언과 구현으로 이루어진다. 메서드의 선언이란, 해당 메서드가 외부 클래스에서 접근 가능한지, static인지, 메서드가 종료될 때 그 메서드를 실행시킨 곳으로 어떤 데이터 타입의 값을 보내줄지, 이름은 무엇인지, 그 메서드를 실행시킬 때 외부에서 어떤 값을 보내줄지를 지정하는 것이다. 또한 해당 메서드를 선언하고 그 안에 그 메서드를 실행시켰을 때 실행할 코드를 우리가 구현하게 된다. // 메서드의 선언과 구현 접근 제한자 sta..

    1주차(22.03.02~03.04)

    day0302 [자바의 명명규칙(Naming Convention)] 1. 공통 규칙 자바는 대소문자를 엄격하게 구분하는 언어로써, 만약 대소문자가 다르면 다른 존재이다. 자바의 모든 것들은 _를 제외한 특수문자를 이름에 사용할 수 없다. 이름의 중간 혹은 끝에 숫자가 나올 수 있지만 시작할 때에는 숫자가 나올 수 없다. 자바에서는 내부적으로 사용하는 50여 가지의 명령어가 존재한다. 우리가 그러한 명령어를 키워드라고 부르는데, 키워드로 이름을 지어줄 수 없다. 키워드는 이클립스가 자주색으로 표시를 해주기 때문에 외울 필요가 없다. 2. 낙타 등 표기법(Camel Back Notation) 낙타 등 표기법이란 어떤 이름이 여러 개의 단어로 이루어져 있을 경우, 단어 간의 구분을 쉽게 하기 위해서 두 번째 ..