Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

JAVA/Java Intermediate(OOP)11

4. 생성자 Construct Swift를 공부하면서도 만났던 생성자. Java에서도 거의 유사했다. 다만 Swift에서는 Initializer였다면 Java에서는 Construct로 부른다는 것? 생성자는 말 그대로 객체를 생성하는데 도움을 주는 메서드이다. 정확히는 객체를 생성한 직후에 값 초기화를 할 수 있도록 하는 특별한 메서드이다. public class Student { String name; int age; int grade; } 위와 같은 클래스가 있다. Student student1 = new Student(); //멤버 변수 초기값 설정 student1.name = "user1"; student1.age = 20; student1.grade = 90; java는 객체를 생성해주고 초기화를 하지 않으면, 멤버의 타입에.. 2024. 3. 2.
3. 절차 지향 vs 객체 지향(OOP) 절차 지향 프로그래밍 말 그대로 '절차'를 지향하는 프로그래밍 방식이다. 즉 '실행 순서'가 중요하다. 어떤 값을 얻기 위해서 '어떻게' 코드를 실행해야 하는가? 처리할 데이터와 처리 방법이 분리되어 있다. 객체 지향 프로그래밍 세상의 대부분의 것들은 특정한 역할이나 책임이 있는 객체로 표현될 수 있다. 객체 지향 프로그래밍에서는 이런 기능은 네가 하고 저런 기능은 내가 하고 와 같이 객체들 사이에서 상호작용(메세징)이 일어난다. 객체 지향에서는 '관련도'가 높은 데이터와 해당 데이터를 처리하는 메서드를 함께 묶어서 관리하게 된다. 아래 예시 코드를 통해서 절차 지향적인 프로그램을 객체 지향적 프로그램으로 변경해 보자. 스마트 전등을 크고 끼는 시나리오를 생각해 보자. 기존 예시 코드들과 같이 메인 메서.. 2024. 2. 23.
2. 기본형과 참조형 (Primitive, Reference), NullPointerException 기본형(Primitive Type) 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입(리터럴 값 or 복사한 값) 정수형: byte, short, int, long 실수형: float, double 논리형: boolean 문자형: char * String은 대문자 카멜케이스를 사용하는 것에서 유추할 수 있겠지만, Class이기 때문에 참조형이지만, java에서 new 연산자 없이 기본 데이터 타입처럼 사용하도록 해주는 특별한 클래스이다. 그렇기 때문에 내부 메서드가 다양한 것이다. (new 키워드를 통해 문자열을 생성하면 힙에 각각 생성된다 -> 문자열 상수 풀을 활용하지 못함!) 연산 - 변수 자체에 값이 있기 때문에 연산이 가능하다. 변수 대입 - 기본형의 경우 변수에 들어 있는 실제 값 자체를 복.. 2024. 2. 12.
1. 클래스 (Class) //데이터를 추가하거나 제거할 떄 3가지 배열의 인덱스에 대해 수정이 필요함. String[] studentNames = {"학생1", "학생2", "학생3"}; int[] studentAges = {15, 16, 20}; int[] studentGrades = {90, 80, 70}; 데이터마다 변수를 선언하는 것의 비효율성을 느껴 배열이 등장했다. 하지만 배열 또한 여러 관련된 데이터가 분산되어 있다면 데이터의 추가, 삭제, 수정 등에서 불편함이 있다. (불안정하기도 하고) -> (이름, 나이, 점수) 이런 식으로 관련된 데이터를 하나로 묶어서 효율적으로 관리해보자! (클래스의 등장) (+ Swift였다면 Struct를 만들어야지~라고 했겠지만 자바에서는 모두 클래스다.) 클래스 선언 클래스는 객체 .. 2024. 2. 10.
0. OOP의 세계로 Java의 기본 문법을 학습했다. Swift를 학습하며 객체 지향에 대한 탐구를 해보며 아 대략 이런 느낌이구나.. 정도는 알았지만 (사실 Swift는 프로토콜 지향에 가깝다고 생각하지만..) 여전히 객체 지향 프로그래밍에 대한 개념과 사용처에 대한 노하우는 많이 부족하다고 생각한다. 지금은 객체 지향이라고 하면 관련 데이터와 동작을 묶어서 캡슐화 하고, 공통된 부분을 추출해 추상화 하고.. 결국 클래스(or 구조체)를 설계하고 인스턴스를 찍어내고.. 프로퍼티와 메서드를 이리저리 조작하는 것 정도로 설명할 수 있겠는데 본 학습을 통해서 객체 지향에 대한 개념이 더 확실하게 잡히기를 바란다 ! 2024. 2. 10.