java

    [Java] day15. 추상클래스/ 인터페이스

    추상클래스와 인터페이스 상속과 다형성에 이어진 개념에 대해 배웠다. 암기해야할 것들이 조금 있는 추상클래스와 인터페이스..... 조금 어려웠다. 각각 아직은 프로그래밍을 실제로 하고 있지 않아 이러한 개념을 왜 사용해야 하는지 크게 와닿지 않았다. 추후 이 개념을 사용하게 될 날을 위해 우선 개념적으로 숙지해야겠다. 추상클래스 추상클래스는 곧 미완성 클래스 이다. 내용이 작성되지 않은 클래스. 메소드를 정의했지만 정작 알멩이는 없는 클래스이다. 이런 미완성 클래스를 왜 사용하는 것일까? 추상클래스를 상속 받은 하위클래스를 이용해서, 이 하위클래스는 추상클래스를 완성시킨다.... why ?? 추상클래스는 필수 기능을 정의해서 오버라이딩을 꼭 해야한다고 강제성을 부여하는 것이다. 바로 다형성을 활용하는 개념..

    [Java] day14. 다형성

    전 수업과 깊게 연관된 내용으로 이전 포스팅을 첨부한다. JAVA 국비교육 day13. 상속 / 오버라이딩 상속 부모클래스가 가지는 멤버를 자식클래스가 물려받아 자신의 멤버인 것처럼 사용할 수 있도록 만든 기술 멤버 외에 타입 또한 상속이 된다 . 다형성의 토대 자바는 단일 상속(하나의 클래스 tm-im.tistory.com 이제 클래스와 객체 파트 이후로 과제가 클래스다이어그램을 읽어내고 그에 맞는 여러 클래스를 만들고. 객체 생성과 메소드 호출하는 법, 상속 관계에 맞춰 프로그래밍하는 걸 연습하다보니까 블로그에 연습문제의 어느 부분을 딱 올리기가 시간이 오래 걸려서 다른 방식의 포스팅이 필요할 것 같다. 차라리 문제 풀이 중 알게 되는 부분을 TIL로 간단히 올리는게 나을 것 같다. 다형성부터는 정말..

    Java 문제풀이. 야구게임. 랜덤한 숫자 맞추기 !

    문제 /* * 숫자 야구게임 만들기 길이 4의 정수 배열을 만들고 각 인덱스에는 0 ~ 9까지의 중복되지 않는 난수를 저장한다. * 4자리 숫자를 입력받아 * 스트라이크, 볼 등의 힌트를 주며 4자리 난수 숫자를 맞추는 게임이다. * 숫자와 자리가 모두 맞는 경우 스트라이크, 숫자는 맞지만 자리는 * 맞지 않는 경우는 볼 이다. 예) 9183 으로 난수가 발생하면 9356 입력 시 1S 1B이다. * * 단, 기회는 총 10번이며, 10번 이내에 맞추는 경우 "정답입니다." 출력 후 게임 종료 10번의 기회가 모두 소진 되면 * "10번의 기회를 모두 소진하셨습니다. 프로그램을 종료합니다." 출력 후 종료 * * 또한 4자리의 정수를 입력하지 않은 경우에는 "4자리의 정수를 입력해야 합니다." 출력 후 ..

    Java 문제풀이. 홀수를 입력받아 오름/내림차순으로 출력하기 (배열)

    문제 /* 홀수인 양의 정수를 입력 받아 입력 받은 크기 만큼의 정수형 배열을 할당하고 * 배열의 중간까지는 1부터 1씩 증가하여 오름차순으로 값을 넣고, * 중간 이후부터 끝까지는 1씩 감소하여 내림차순으로 값 넣어 출력하세요 * * 단, 홀수인 양의 정수를 입력하지 않은 경우에는 "양수 혹은 홀수만 입력해야 합니다."를 출력하세요 * * -- 입력 예시 -- * 홀수인 양의 정수를 입력하세요 : 7 * * -- 출력 예시 -- * 1 2 3 4 3 2 1 * * -- 입력 예시 -- * 홀수인 양의 정수를 입력하세요 : 8 * * -- 출력 예시 -- * 양수 혹은 홀수만 입력해야 합니다. */ 작성한 코드 package com.greedy.section01.array.level03.hard; imp..

    [Java] day13. 상속 / 오버라이딩

    상속 부모클래스가 가지는 멤버를 자식클래스가 물려받아 자신의 멤버인 것처럼 사용할 수 있도록 만든 기술 멤버 외에 타입 또한 상속이 된다 . 다형성의 토대 자바는 단일 상속(하나의 클래스만을 부모클래스로 가짐)을 지원 클래스 간의 상속 시에는 extends 키워드를 사용 public class Academy extends Company{} 장점 새로운 클래스를 작성 시 기존에 작성 된 클래스의 재사용 가능 클래스간 계층 관계가 형성되어 다형성 문법의 토대가 됨 단점 부모클래스의 기능 변경 시 자식클래스의 정상적인 동작 유무 예측이 힘듦 자식클래스가 물려받아 사용하는 기능들을 부모클래스에서 변경 시 어려움이 따름 부모클래스로부터 물려받은 기능이 자식클래스에서는 무의미 할 수 있음 장단점을 고려해 볼 때 I..

    [Java] day12. 객체배열

    객체배열 레퍼런스 변수에 대한 배열 동일한 타입의 여러 인스턴스들을 배열로 관리할 수 있다. 생선한 인스턴스도 배열을 이용해서 관리하면 동일한 타입의 여러 개 인스턴스를 각각 취급하지 않고 연속 처리할 수 있어서 유용하다. 또한 반환값은 1개의 값만 반환할 수 있기 때문에 동일한 타입의 여러 인스턴스를 반환해야 하는 경우 객체 배열을 이용할 수 있다. 선언 클래스명[] 배열명; 클래스명 배열명[]; Product[] pArr; Product pArr[]; 할당 배열명 = new 클래스명[배열크기]; pArr = new Product[3]; 선언과 동시에 할당 클래스명 배열명[] = new 클래스명[배열크기]; Product pArr[] = new Product[3]; 인덱스를 이용한 초기화 배열명[i] ..

    [Java] day11. 오버로딩 / Static

    오버로딩 ( overloading ) 이란 동일한 메소드명 으로 다양한 종류의 매개변수에 따라 다르게 처리해야하는 것을 관리하기 위해 사용하는 기술 동일한 메소드명의 매개변수의 타입 , 개수 , 순서 를 다르게 작성 (메소드의 시그니처 가 다르지만 메소드 명은 같게 함) 생성자 작성 시 매개변수 부분의 타입, 갯수, 순서를 다르게 작성하면 서로 다른 생성자로 인식해서 동일한 이름이지만 여러 개 작성할 수 있었다. = > 오버로딩 ( Overloading ) 오버로딩의 사용이유 동일한 기능의 메소드를 매개변수에 따라 다르게 이름을 정의하면 복잡하고 관리하기가 어려워 진다. 따라서 동일한 이름으로 다양한 종류의 매개변수에 따라 처리해야 하는 여러 메소드를 동일한 이름으로 관리하기 위해 사용한다. 오버로딩의 ..

    Java 문제풀이. 랜덤한 로또번호 중복없이 오름차순 정렬하기

    문제 * 로또번호 생성기 * 6칸 짜리 정수 배열을 하나 생성하고 * 1부터 45까지의 중복되지 않는 난수를 발생시켜 각 인덱스에 대입한 뒤 * 오름차순 정렬하여 출력하세요 작성한 코드 int[] rotoNum = new int[6]; //배열 선언 및 할당 for (int i = 0; i

    [자바의 정석] 연습문제. 거스름돈 원화 단위별 출력하기 (배열)

    이전 수업 때 거스름돈을 단위별로 출력하는 문제를 배열없이 반복문으로 해결하는 문제를 받았을 때 풀지 못했는데 ㅠ 배열 파트에 들어가고 나서 자바의 정석 연습문제로 다시 만난 이 문제 배열로는 쉽게 풀 수 있었다!! 배열없이 반복문, 조건문으로 풀 때 내가 캐치하지 못한 건, 거스름돈이 50000원 으로 시작했다면, 처음엔 5로 나누어 10000원을 만들고, 그 다음번엔 2로 나누어 5000원 이런 식으로 거스름돈의 원화 단위를 나누는 방법을 생각 못함. 코드로 정리하면 이런 식으로 만들어서 거스름돈을 출력하는 것. //동전의 단위를 바꾸기 위한 변수 선언. int i = 0 ; //처음엔 5로 나누고, 다음엔 2로 나누고를 홀/짝 반복. if ( i% 2 == 0 ){ coinUnit / 5 ; } e..