본문 바로가기

부트캠프 개발일기/Java15

13일차: 미니 프로젝트(얕은복사 vs 깊은복사) 자바에서 객체를 복사하는 방법은 얕은복사(shallow copy)와 깊은복사(deep copy) 두가지가 있음 ❯ 얕은 복사(Shallow Copy) 객체 내용을 복사하는 것이 아니라, 객체의 참조값(reference)만을 복사하는 방법. 복사된 개체는 원본 객체와 같은 내용을 가리키게 되므로 복사된 객체 내용을 수정하면 원본 객체 내용도 함께 변경됨 ❯ 깊은 복사(Deep Copy) 객체의 내용을 복사하는 방법. 복사된 객체와 원본 객체는 서로 독립적으로 존재하며 하나를 수정해도 다른 객체에는 영향 주지 않음 아래와 같은 클래스가 있다고 가정 class Person { private String name; private int age; private Address address; // getter, s.. 2023. 3. 2.
12일차: 객체지향 프로그래밍 심화(다형성/Polymorphism, 추상화/Abstraction) ❯ 다형성(Polymorphism) 다형성 poly(여러개) + morphism(형태, 실체) 의 의미로, 하나의 객체가 여러개의 형태를 가질 수 있는 성질을 의미함 상위 클래스의 참조변수를 통해 하위 클래스 객체를 참조할 수 있도록 허용한것. (반면 하위 클래스 참조변수로 상위 클래스 객체 참조는 불가능) ⇒ 상위 클래스를 참조변수 타입으로 지정할 경우, 해당 참조변수가 사용할 수 있는 멤버의 개수는 상위 클래스의 멤버의 수와 같음 참조변수의 타입 변환 다르게 표현하자면, 사용할 수 있는 멤버의 개수를 조절하는 것을 의미함 서로 상속관계에 있는 상위 - 하위 클래스 사이에만 타입 변환이 가능함 하위 클래스에서 상위 클래스로의 타입변환(업캐스팅)은 형변환 연산자(괄호) 생략 가능 상위 클래스에서 하위 클.. 2023. 2. 28.
11일차: 객체지향 프로그래밍 심화(상속/Inheritance, 캡슐화/Encapsulation) ❯ 상속(Inheritance) 상속 기존 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소. 하위 클래스는 상위 클래스가 가진 모든 멤버를 상속 받음(서로 상속관계에 있다고 하며, 상위 클래스로부터 확장되었다고도 표현함) ⇒ 상위 클래스의 코드를 재사용함으로써 적은 양의 코드로 새로운 코드(하위 클래스) 작성 가능. 코드의 중복을 제거함 하나의 객체가 여러가지 모양으로 표현 가능하므로 다형적 표현이 가능해짐 자바에서는 단일 상속만을 허용함. [extends + 상위 클래스명]으로 정의함 ex. class Teacher extends Person 포함 관계 포함(composite)은 클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는것을 의미 다른 클래스를 재사용한다는 점에서 상속과 유사.. 2023. 2. 27.
10일차: 객체지향 프로그래밍 기초(생성자, 내부클래스) ❯ 생성자(Constructor) 생성자는 객체를 생성하는 역할을 하는 클래스의 구성요소로, 인스턴스가 생성될 때 호출되는 메서드. 인스턴스를 생성하는것은 new 키워드이고, 생성자는 인스턴스 변수를 초기화하는데 사용됨 생성자의 이름은 반드시 클래스의 이름과 같아야 함 생성자는 리턴 타입이 없음 (리턴 타입 자체가 존재하지 않으므로 void 키워드 사용안함) 생성자도 메서드와 같이 오버로딩이 가능함. 한 클래스 내에 여러개의 생성자 존재 가능 기본생성자(Default Constructor) 만약 인스턴스를 만들 때 생성자가 클래스 안에 없다면 자바 컴파일러가 자동으로 기본 생성자를 추가함 ex. class Example ⇒ Example( ){ } 자동으로 생성 생성자가 클래스 안에 추가되어있다면 해당 .. 2023. 2. 24.
9일차: 객체지향 프로그래밍 기초(Class, Field, Method) ❯ 클래스(Class)와 객체(Object) 객체는 모든 실재하는 어떤 대상을 의미함 객체지향이론의 핵심은 "실제 세계는 객체로 구성되어있으며 사건은 객체간 상호작용에 의한것"을 전제로 함 => 프로그래밍 관점에서 보면, 필요한 데이터를 상태와 행위를 가진 객체로 만들고 그 객체들 간의 협력과 상호작용을 통해 기능을 구성함 클래스 클래스: 객체를 정의한 설계도, 틀의 역할. 객체를 생성하는데 사용됨 객체 그 자체가 아니라 객체를 생성하는데 사용되는 틀임. ex. 클래스(붕어빵 틀), 객체(붕어빵) 객체: 클래스를 통해 생성된 객체를 해당 클래스의 인스턴스(instance)라고 함. 객체는 모든 인스턴스를 포괄하는 넓은 의미이며, 인스턴스는 해당 객체가 어떤 클래스에서 생성되었는지를 강조함.(두가지 유사함.. 2023. 2. 23.
8일차: Java 기초(배열) ❯ 배열 하나의 변수에는 하나의 값만 할당할 수 있으므로 많은 값을 저장해야할 경우 수많은 변수를 선언해야함 이 때, 각 값들이 같은 타입을 가지는 경우 배열을 사용해 단 하나의 변수로 값을 저장하고 참조할 수 있음 배열: 동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조를 의미. 메모리 공간상에 묶여서 저장됨 요소(element): 배열이 가진 각 값을 의미 인덱스(index): 배열의 각 요소가 부여받는 순번(String과 유사) 배열의 차원: 배열이 중첩된 정도를 의미함. 배열의 요소가 또 다른 배열인 경우를 의미. 보통 2차원까지 사용함 (다차원 배열도 경우에 따라 사용하는 경우는 있음) ❯ 1차원 배열 가장 일반적인 형태로, 배열의 요소가 배열이 아닌 경우를 의미함 1차원 배열의 선언과 초기.. 2023. 2. 22.