2025/04 27

클래스의 필드 선언

개인 과제를 하는 도중에 Cart cart;Food(Cart cart) { this.cart = cart;} 이러한 구조를 짜게 되었는데 ( Food 클래스에 속성과 생성자를 만듬) 클래스의 멤버 변수로 Cart 타입의 cart 변수를 선언하게 된건데 이러한 방식이 가능한지 처음 알게 되었다. 이러한 방식을 Dependency Injection이라고 하는데 객체 간의 의존관계를 외부에서 주입해주는 설계 패턴이라고 한다 ( GPT 피셜 ) 의존성 주입을 사용하지 않은 방식과 사용한 방식 1. 의존성 주입을 안 쓴 경우 :public class Food { Cart cart = new Cart(); // 직접 생성 public void showCart() { System.out..

카테고리 없음 2025.04.30

Integer.parseInt

코테 연습을하다가 문자열을 숫자로 변환해서 더하라는 문제가 있어서 찾아보니 parse( ) 라는 함수가 있었다. 이 함수는 숫자로 이루어진 문자열을 숫자로 바꿔주는 함수이다 String strNum1 = new String("1234");String strNum2 = new String("4321"); 으로 되어있는 문자열을 합치게 된다면 [ 12344321 ] 이런식으로 나오게 될것이다. "1234"로 만들어진 문자열을 숫자열로 바꾸는 방법은 String strNum = new String("1234");int number = Integer.parseInt(strNum);System.out.println(number); Integer.parseInt( ) 를 이용하면 된다. Integer 타입 말고도 ..

카테고리 없음 2025.04.30

JAVA - Static

static 키워드는 클래스 단위로 관리 되는 요소인다. 인스턴스에 귀속되지 않고 클래스 자체에 귀속된다. static 변수는 프로그램이 시작할때 메모리에 할당되고 프로그램이 종료될 때까지 유지된다. 클래스가 로드될때 메모리의 메소드 영역에 할당되기 때문이다.하지만 남용해서 사용하게 된다면 객체지향 프로그래밍의 원칙과 상반되고(객체 보다는 기능 중심으로 설계가된다는 의미), 메모리 사용량 증가로 이어질 수 있다. 그래서사용할때 신중하게 결정해야한다. static 변수는 클래스 레벨에서 선언되고, 모든 인스턴스에 의해 공유된다. 인스턴스화 없이 클래스 이름을 통해 직접 호출할수있다. public class MathUtils { public static int add(int a, int b) { ..

카테고리 없음 2025.04.25

자바 this( )

this는 객체 자신을 가리키는 래퍼런스 변수로 알고 생성자만들때 사용을 했었는데 여러 생성자를 만들다 보면 중복되는 부분이 있다는것을 알게되었다. MemberConstruct(String name, int age, int grade) { System.out.println("생성자 호출 name : " + name + ", age : " + age + ", grade : " + grade); this.name = name; this.age = age; this.grade = grade;}MemberConstruct(String name, int age) { System.out.println("생성자 호출 name : " + name + ", age : " + age + ", g..

카테고리 없음 2025.04.22

개인과제 계산기 Lv2

Lv1 을 다하고 Lv2단계 제작 시작 먼저 계산기 클래스와 메인 클래스를 구분을 시작했다. 메인 클래스에서는 출력하는 문구만 최대한 남기기 위해서 사칙연산을 하는 기능들은 전부 계산기 클래스로 넘겨주었다. 작성하면서 여러 오류가 있었는데 가장 기억에 남는 오류는 리스트에 있는 숫자를 삭제를 하고 삭제가 된거를 확인을 했는데 바로 삭제 가기 버튼을 입력해서 2차 확인을 했더니 숫자가 남아있는 오류가 있었다. 이게 왜 남아있지 계속 고민하다가 튜터님에게 가서 물어보고 해결을 했는데... 알고보니까 계산기 클래스 부분에서 삭제기능만 있어야하는 메소드에 불필요하게 리스트에 저장된 값을 불러오는 출력문을 같이 쓰고 있었다. 그래서 그로 인해서 오류가 발생하게 된것이었다. 이번 단계에서는 클래스에다가 기능부..

끄적모음 2025.04.17

개인과제 계산기 1

인텔리제이랑 깃헙이랑 연결 블로그 참고 하니까 쉽게 연결됬다 연결하는 방법 먼저 인텔리제이 설정 -> Version Control -> git 설치 확인(안되있다면 설치) -> 밑에 github 이동해서 계정추가 및 로그인 -> 메뉴바에서 Git 설정 -> manage Remotes 클릭 -> + 버튼 선택하면 url 나옴 -> github 링크 넣으면 완료 1단계로 클래스를 이용하지 않고 계산기 만들어 보았다. 내가 구현한 계산기는 반복문 안에서 숫자 두개와 산술연산자 4개중 하나를 입력해서 출력하게 하는 기능으로 만들었다. 처음에 바로 코드를 작성 하기 보다는 어떻게 돌아가게 할것인지 그림으로 어떻게 돌아가게 할지 대충 그려보았다. 이렇게 구상해서 해보니까 코드를 빠르게 만들수 있었던거 같다. 더보..

끄적모음 2025.04.16

객체지향 PART 4 - 다형성

다형성(Polymorphism)이란?다형성은 하나의 타입으로 여러 객체를 다룰 수 있는 객체지향의 4번째 특징입니다.인터페이스 상속, 클래스 상속을 활용해서 추상계층을 표현해 왔습니다.이제 추상 계층이라는 특징을 활용해서 다형성을 구현할 수 있습니다. 인터페이스를 활용한 다형성public interface LifeForm { void exist();}public interface Animal extends LifeForm { void makeSound();}public class Cat implements Animal { @Override public void makeSound() { System.out.println("야옹"); } @Override ..

끄적모음 2025.04.15

객체지향 PART 3 - 추상화

추상화란 무엇일까?고양이 → 동물 → 생명체추상화란 불필요한 정보를 제거하고 본질적인 특징만 남기는 것을 의미합니다.객체지향 프로그래밍에서는 추상화의 계층적 특징을 활용해서 유지보수성이 좋은 프로그램을 만들 수 있습니다.이런 추상화 특징을 활용할 수 있다는 것이 객체지향의 3번째 특징입니다.우리는 계층구조를 자바의 특징(인터페이스 상속, 클래스 상속) 구현할 수 있습니다.추상화의 특징은 다형성에서 활용됩니다. 인터페이스 상속을 활용한 추상 계층 표현public interface LifeForm { void exist(); // ✅ 공통: 모든 생명체는 존재한다.}public interface Animal extends LifeForm { void makeSound(); //✅ 공통: 모든 동물..

끄적모음 2025.04.15