Difference between r1.27 and the current
@@ -74,11 +74,232 @@
삼항연산자를 써서 풀어봤다.
= 4주차 수업 회고 =
자바에서도 매개변수에 디폴트값을 넣는 게 가능한지 궁금했는데, 물론 그냥 필드를 선언할 때 값을 지정해주면 그만이다.
근데 자바나 C에선 new function()으로 함수를 생성할 때 매개변수의 입력 경우의 수에 따라 함수를 재정의해주어야 한다.
C에서는
{{{void Function(char param1, int param2, double param3=9.8);}}}
같은 형태로 매개변수에 디폴트값을 넣어 하나의 함수로도 매개변수가 2개, 3개일 때 동시에 사용할 수 있다.
이런 형태가 java 클래스의 생성자에서도 쓰일 수 있는지 시험해봐야겠다.
* https://bluesid.tistory.com/251 도움이 될 만한 링크인 것 같아요 - [김은솔]
= 4주차 수업 회고 =
생성자를 오버로딩할 때 겹치는 코드를 줄이기 위해서 다른 생성자를 끌어다 사용한다는 점이 인상적이었다.
근데 자바나 C에선 new function()으로 함수를 생성할 때 매개변수의 입력 경우의 수에 따라 함수를 재정의해주어야 한다.
C에서는
{{{void Function(char param1, int param2, double param3=9.8);}}}
같은 형태로 매개변수에 디폴트값을 넣어 하나의 함수로도 매개변수가 2개, 3개일 때 동시에 사용할 수 있다.
이런 형태가 java 클래스의 생성자에서도 쓰일 수 있는지 시험해봐야겠다.
{{{#1
// student.java
package QW;
public class Student {
String department = "소프트웨어학부";
String gender = "female";
int studentId = 21;
Student(){
}
}
// test.java
package QW;
public class Test {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student.department);
System.out.println(student.studentId);
System.out.println(student.gender);
}
}
#2
//test.java
package QW;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
String department, gender;
int studentId;
Scanner sc = new Scanner(System.in);
System.out.println("학부: ");
department = sc.next();
System.out.println("학번: ");
studentId = sc.nextInt();
System.out.println("성별: ");
gender = sc.next();
Student student = new Student(department, studentId, gender);
System.out.println(student.department);
System.out.println(student.studentId);
System.out.println(student.gender);
}
}
//student.java
package QW;
public class Student {
String department, gender;
int studentId;
Student(String department, int studentId, String gender){
this.department = department;
this.gender = gender;
this.studentId = studentId;
}
}
}}}
== 댓글 ==* https://bluesid.tistory.com/251 도움이 될 만한 링크인 것 같아요 - [김은솔]
= 5주차 수업 회고 =
저번 시간에 생성자에 대해 배웠다면 이번엔 필드, 변수, 매소드에 대해 배웠다.
형태만 다르지 c++이나 파이썬과 코드의 흐름은 비슷해서 배우기 어렵지 않았다.
다만 ststic final 으로 상수를 선언하는 게 신기했다. c에서도 const 등으로 상수를 선언하긴 하지만, 그것보단 #define으로 선언하는 게 더 익숙해져서인지 새삼스러웠다. #define은 변수를 생성한다기보단 그냥 PI라는 이름이 나오면 3.14로 치환해주는 함수같은 형태라면 const와 final은 변수의 형태이지만 여러 제약을 통해 상수로서 역할하는 것이다. 이 둘 사이에도 차이가 있다고 하는데 c++ 이론도 완벽하진 않아서 둘의 차이를 공부하긴 힘들 것 같다. 그래도 새싹톤 참가 전엔 약간이라도 알아보는 게 도움이 될 듯하다.
{{{실습 - 다용도 계산기 구현
<필수>
- 사칙연산이 가능해야 한다.
- 3.14의 값을 갖는 pi를 정적 변수로 선언한다.
- 나눗셈의 매개 변수는 int, double 두 개로 선언한다.
- 계산기 변수가 몇 번 만들어졌는지 확인할 수 있는 정적 필드 calculatorSetCount를 만들어야 한다. (계산기가 생성될 때마다 setCount의 숫자를 증가시킨다.)
<Calculator class>
- 사칙연산 메소드
- 정적 필드 pi
- circleArea 메소드 :
원의 넓이를 구하는 메소드. pi를 사용해야 한다. 반지름을 하나 입력받는다. 매개 변수의 타입은 int로 한다.
<TestMain class>
- 계산기 변수를 선언하고 덧셈, 나눗셈을 수행한 후 값을 출력한다.
- 새로운 계산기 변수를 선언하고 원의 넓이를 계산하고 출력한다.
- calculatorSetCount를 출력한다.}}}
{{{
//Calculator.java
package practice;
public class Calculator {
static final double PI = 3.14;
static int calculatorSetCount = 0;
Calculator(){
calculatorSetCount++;
}
int addition(int x, int y) {
int result = x+y;
return result;
}
int subtraction(int x, int y) {
int result = x-y;
return result;
}
int multiplication(int x, int y) {
int result = x*y;
return result;
}
int division(int x, int y) {
int result = x/y;
return result;
}
double division(double x, double y) {
double result = x/y;
return result;
}
double circleArea(int x) {
double result = PI*x*x;
return result;
}
}
//TestMain.java
package practice;
import java.util.Scanner;
public class TestMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Calculator cal_1 = new Calculator();
int additionInt = cal_1.addition(10, 20);
System.out.println(additionInt);
int divisionInt = cal_1.division(30, 20);
System.out.println(divisionInt);
double divisionDouble = cal_1.division(5.0, 2.3);
System.out.println(divisionDouble);
Calculator cal_2 = new Calculator();
System.out.println("반지름을 입력하세요: ");
int radius = sc.nextInt();
double circleArea = cal_2.circleArea(radius);
System.out.println(circleArea);
System.out.println(Calculator.calculatorSetCount);
}
}
}}}
이렇게 써놓고 보니 TestMain.java에서 {{{Calculator.calculatorSetCount+=1;}}}으로 {{{calculatorSetCount}}}에 접근이 가능한 것 같아서 별로이다. 이런 코드보단, {{{private static int calculatorSetCount = 0;}}}으로 {{{calculatorSetCount}}}에 접근이 불가능하도록 해놓고, {{{static int getCalculatorSetCount() {
return calculatorSetCount;
}
}}} 같은 형식으로 getter 함수를 만들어주는 게 더 명확한 것 같다. 그리고 다음부턴 매소드나 필드 모두에 private이든 public이든 써주어야 헷갈리지 않을 것 같다. 그러기 위해선 접근 지정자에 대해 더 공부해야할 것 같은데, 이것도 시험 끝나면 한번 정리해봐야겠다.
= 6주차 수업 회고 =
'상속' 하나만 배웠는데도, 다른 시간보다 배운 게 더 많은 것 같다.
- 실습
{{{Fruit 클래스를 상속받는 Apple 클래스를 만들어보자!
<Fruit class>
- String name, String color, String flavor
- 생성자는 같은 패키지와 자식에서만 쓸 수 있도록 선언
- 생성자의 입력은 name, color, flavor 3개가 동시에 들어온다.
- name, color, flavor를 출력하는 메소드 print를 선언
- 메소드는 public으로 선언
<Apple class>
- color는 red로 고정
- print를 오버라이딩해서 color가 red인 경우 This is Apple을 출력하도록 할 것. 그 이외에는 Fruit의 print를 호출할 것
<Test class>
- Fruit을 선언하고, 임의의 값 (name, color, flavor 3개를 넣을 것, 단 color는 red가 아닌 다른 값을 넣는다) 을 넣어 초기화한다.
- Apple을 선언하고, 임의의 값 (color 제외하고 2개를 넣을 것)을 넣어 초기화한다.
- 각각 Fruit 과 Apple의 print를 호출한다.}}}
수업 당시 실습 전에 강의실을 나와버려서 코드 확인은 받지 못했다.
{{{public class Apple extends Fruit{
private String color = "red";
public Apple(String name, String flavor){
super(name, this.color, flavor);
}
}}}
처음 Fruit 클래스의 코드를 이렇게 썼을 때
>"Cannot refer to 'this' nor 'super' while explicitly invoking a constructor"
라는 오류메세지가 떴다. 생성자를 호출할 때는 this와 super를 통한 참조가 불가능하다고 하는 것 같은데, 또 생성자 호출은 생성자에서 첫 번째 줄의 코드에 나와야 해서 {{{public class Apple extends Fruit{
private String color = "red";
public Apple(String name, String flavor){
String color = this.color;
super(name, color, flavor);
}
}}}같은 형태도 불가능하다.
그래서 {{{public class Apple extends Fruit{
public Apple(String name, String flavor){
super(name, "red", flavor);
}
}}}로 일단 짜긴 했는데 더 좋은 방법이 있을지 궁금하다. 이건 좀 난잡한 코드인 것 같다.
= Q =
제 이름으로 된 새로운 페이지를 만들고 싶어서 [https://wiki.zeropage.org/wiki.php/%EC%83%88%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A7%8C%EB%93%A4%EA%B8%B0 https://wiki.zeropage.org/wiki.php/새페이지만들기]
을 참고해서 Go에 제 이름을 쳤는데, 자꾸 이 링크로 접속이 되네요. 이건 어떻게 해결해야 할까요? 이 페이지를 삭제하고 제 페이지를 만들고 다시 이 페이지를 복구해야 할까요?
그리고 정모 링크가 올라오는 사이트가 혹시 따로 있나요?
감사합니다.
- 이유는 모니위키가 '/' 기준으로 하위 페이지를 구분 해서 이 페이지의 이름도 '김동영'으로 인식해서 그런 것 같은데여. [https://wiki.zeropage.org/wiki.php/김동영?action=edit] << 다른 페이지 만들기로 들어가서 페이지 이름 값만 바꿔 넣은건데 이거 주소창에 쳐서 해볼래요? 정모 사이트는 카톡같은데 있을 것 같은데 잘 모름... 회장단한테 말씀드림 - [kjm]
- └ 감사합니다..!! [김동영]
1. 1주차 수업 회고 ¶
JS와 JAVA 사이에 접점이 있을 것이라 생각하고 JAVA를 배우겠다고 투표했다.
오늘 둘 사이에 별로 큰 접점이 없다는 것을 알았지만 상관없다.
어차피 JAVA도 처음 해보는 것이니 분명 새로운 것을 많이 배울 수 있을 것이다.
오늘 둘 사이에 별로 큰 접점이 없다는 것을 알았지만 상관없다.
어차피 JAVA도 처음 해보는 것이니 분명 새로운 것을 많이 배울 수 있을 것이다.
2.1. assignment 1 ¶
1부터 100까지의 정수 중에서 짝수들의 합을 계산하여 결과값을 출력하는 프로그램을 구현한다.
조건 : while문을 사용하고, if 문은 사용하지 않도록 한다.
조건 : while문을 사용하고, if 문은 사용하지 않도록 한다.
package start_java; public class Hello { public static void main(String[] args) { int i=1, sum=0; while(i<=100) { sum += i; i++; } System.out.print(sum); } }
2.2. assignment 2 ¶
주어진 10진수를 2진수로 변환하는 프로그램을 구현한다.
2번에서 12345같은 꽤 큰 수를 입력하면 이상한 값이 출력되는 것을 방지하기 위해 long 형을 사용했다. 하지만 그래도 표현상 한계가 있다.
배열을 사용하는 풀이가 가장 편한 것 같다. 자바에도 스택이 있는 지 모르겠다. 2번 풀이를 추가해야 함.
package start_java; import java.util.Scanner; public class Hello { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); long digit=1, sum=0; while(n!=0) { sum += n%2 * digit; n /= 2; digit *= 10; } System.out.print(sum+"(2)"); scanner.close(); } }문법 자체는 c++과 많이 다르지 않은 것 같다.
2번에서 12345같은 꽤 큰 수를 입력하면 이상한 값이 출력되는 것을 방지하기 위해 long 형을 사용했다. 하지만 그래도 표현상 한계가 있다.
배열을 사용하는 풀이가 가장 편한 것 같다. 자바에도 스택이 있는 지 모르겠다. 2번 풀이를 추가해야 함.
3.1. assignment 1 ¶
주어진 배열의 항목에서 최댓값 구하기
int[] array = {1, 5, 3, 8, 2}
int[] array = {1, 5, 3, 8, 2}
package start_java; public class Hello { public static void main(String[] args) { int[] array = {1, 5, 3, 8, 2}; int max = 0; for(int i=0; i<5; i++) { max = ((max < array[i]) ? array[i] : max); } System.out.print(max); } }삼항연산자를 써서 풀어봤다.
4. 4주차 수업 회고 ¶
생성자를 오버로딩할 때 겹치는 코드를 줄이기 위해서 다른 생성자를 끌어다 사용한다는 점이 인상적이었다.
자바에서도 매개변수에 디폴트값을 넣는 게 가능한지 궁금했는데, 물론 그냥 필드를 선언할 때 값을 지정해주면 그만이다.
근데 자바나 C에선 new function()으로 함수를 생성할 때 매개변수의 입력 경우의 수에 따라 함수를 재정의해주어야 한다.
C에서는
같은 형태로 매개변수에 디폴트값을 넣어 하나의 함수로도 매개변수가 2개, 3개일 때 동시에 사용할 수 있다.
이런 형태가 java 클래스의 생성자에서도 쓰일 수 있는지 시험해봐야겠다.
근데 자바나 C에선 new function()으로 함수를 생성할 때 매개변수의 입력 경우의 수에 따라 함수를 재정의해주어야 한다.
C에서는
void Function(char param1, int param2, double param3=9.8);
같은 형태로 매개변수에 디폴트값을 넣어 하나의 함수로도 매개변수가 2개, 3개일 때 동시에 사용할 수 있다.
이런 형태가 java 클래스의 생성자에서도 쓰일 수 있는지 시험해봐야겠다.
#1 // student.java package QW; public class Student { String department = "소프트웨어학부"; String gender = "female"; int studentId = 21; Student(){ } } // test.java package QW; public class Test { public static void main(String[] args) { Student student = new Student(); System.out.println(student.department); System.out.println(student.studentId); System.out.println(student.gender); } } #2 //test.java package QW; import java.util.Scanner; public class Test { public static void main(String[] args) { String department, gender; int studentId; Scanner sc = new Scanner(System.in); System.out.println("학부: "); department = sc.next(); System.out.println("학번: "); studentId = sc.nextInt(); System.out.println("성별: "); gender = sc.next(); Student student = new Student(department, studentId, gender); System.out.println(student.department); System.out.println(student.studentId); System.out.println(student.gender); } } //student.java package QW; public class Student { String department, gender; int studentId; Student(String department, int studentId, String gender){ this.department = department; this.gender = gender; this.studentId = studentId; } }
5. 5주차 수업 회고 ¶
저번 시간에 생성자에 대해 배웠다면 이번엔 필드, 변수, 매소드에 대해 배웠다.
형태만 다르지 c++이나 파이썬과 코드의 흐름은 비슷해서 배우기 어렵지 않았다.
다만 ststic final 으로 상수를 선언하는 게 신기했다. c에서도 const 등으로 상수를 선언하긴 하지만, 그것보단 #define으로 선언하는 게 더 익숙해져서인지 새삼스러웠다. #define은 변수를 생성한다기보단 그냥 PI라는 이름이 나오면 3.14로 치환해주는 함수같은 형태라면 const와 final은 변수의 형태이지만 여러 제약을 통해 상수로서 역할하는 것이다. 이 둘 사이에도 차이가 있다고 하는데 c++ 이론도 완벽하진 않아서 둘의 차이를 공부하긴 힘들 것 같다. 그래도 새싹톤 참가 전엔 약간이라도 알아보는 게 도움이 될 듯하다.
형태만 다르지 c++이나 파이썬과 코드의 흐름은 비슷해서 배우기 어렵지 않았다.
다만 ststic final 으로 상수를 선언하는 게 신기했다. c에서도 const 등으로 상수를 선언하긴 하지만, 그것보단 #define으로 선언하는 게 더 익숙해져서인지 새삼스러웠다. #define은 변수를 생성한다기보단 그냥 PI라는 이름이 나오면 3.14로 치환해주는 함수같은 형태라면 const와 final은 변수의 형태이지만 여러 제약을 통해 상수로서 역할하는 것이다. 이 둘 사이에도 차이가 있다고 하는데 c++ 이론도 완벽하진 않아서 둘의 차이를 공부하긴 힘들 것 같다. 그래도 새싹톤 참가 전엔 약간이라도 알아보는 게 도움이 될 듯하다.
실습 - 다용도 계산기 구현 <필수> - 사칙연산이 가능해야 한다. - 3.14의 값을 갖는 pi를 정적 변수로 선언한다. - 나눗셈의 매개 변수는 int, double 두 개로 선언한다. - 계산기 변수가 몇 번 만들어졌는지 확인할 수 있는 정적 필드 calculatorSetCount를 만들어야 한다. (계산기가 생성될 때마다 setCount의 숫자를 증가시킨다.) <Calculator class> - 사칙연산 메소드 - 정적 필드 pi - circleArea 메소드 : 원의 넓이를 구하는 메소드. pi를 사용해야 한다. 반지름을 하나 입력받는다. 매개 변수의 타입은 int로 한다. <TestMain class> - 계산기 변수를 선언하고 덧셈, 나눗셈을 수행한 후 값을 출력한다. - 새로운 계산기 변수를 선언하고 원의 넓이를 계산하고 출력한다. - calculatorSetCount를 출력한다.
//Calculator.java package practice; public class Calculator { static final double PI = 3.14; static int calculatorSetCount = 0; Calculator(){ calculatorSetCount++; } int addition(int x, int y) { int result = x+y; return result; } int subtraction(int x, int y) { int result = x-y; return result; } int multiplication(int x, int y) { int result = x*y; return result; } int division(int x, int y) { int result = x/y; return result; } double division(double x, double y) { double result = x/y; return result; } double circleArea(int x) { double result = PI*x*x; return result; } } //TestMain.java package practice; import java.util.Scanner; public class TestMain { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Calculator cal_1 = new Calculator(); int additionInt = cal_1.addition(10, 20); System.out.println(additionInt); int divisionInt = cal_1.division(30, 20); System.out.println(divisionInt); double divisionDouble = cal_1.division(5.0, 2.3); System.out.println(divisionDouble); Calculator cal_2 = new Calculator(); System.out.println("반지름을 입력하세요: "); int radius = sc.nextInt(); double circleArea = cal_2.circleArea(radius); System.out.println(circleArea); System.out.println(Calculator.calculatorSetCount); } }
이렇게 써놓고 보니 TestMain.java에서
Calculator.calculatorSetCount+=1;
으로 calculatorSetCount
에 접근이 가능한 것 같아서 별로이다. 이런 코드보단, private static int calculatorSetCount = 0;
으로 calculatorSetCount
에 접근이 불가능하도록 해놓고, static int getCalculatorSetCount() { return calculatorSetCount; }같은 형식으로 getter 함수를 만들어주는 게 더 명확한 것 같다. 그리고 다음부턴 매소드나 필드 모두에 private이든 public이든 써주어야 헷갈리지 않을 것 같다. 그러기 위해선 접근 지정자에 대해 더 공부해야할 것 같은데, 이것도 시험 끝나면 한번 정리해봐야겠다.
6. 6주차 수업 회고 ¶
'상속' 하나만 배웠는데도, 다른 시간보다 배운 게 더 많은 것 같다.
- 실습
Fruit 클래스를 상속받는 Apple 클래스를 만들어보자! <Fruit class> - String name, String color, String flavor - 생성자는 같은 패키지와 자식에서만 쓸 수 있도록 선언 - 생성자의 입력은 name, color, flavor 3개가 동시에 들어온다. - name, color, flavor를 출력하는 메소드 print를 선언 - 메소드는 public으로 선언 <Apple class> - color는 red로 고정 - print를 오버라이딩해서 color가 red인 경우 This is Apple을 출력하도록 할 것. 그 이외에는 Fruit의 print를 호출할 것 <Test class> - Fruit을 선언하고, 임의의 값 (name, color, flavor 3개를 넣을 것, 단 color는 red가 아닌 다른 값을 넣는다) 을 넣어 초기화한다. - Apple을 선언하고, 임의의 값 (color 제외하고 2개를 넣을 것)을 넣어 초기화한다. - 각각 Fruit 과 Apple의 print를 호출한다.수업 당시 실습 전에 강의실을 나와버려서 코드 확인은 받지 못했다.
public class Apple extends Fruit{ private String color = "red"; public Apple(String name, String flavor){ super(name, this.color, flavor); }처음 Fruit 클래스의 코드를 이렇게 썼을 때
"Cannot refer to 'this' nor 'super' while explicitly invoking a constructor"
라는 오류메세지가 떴다. 생성자를 호출할 때는 this와 super를 통한 참조가 불가능하다고 하는 것 같은데, 또 생성자 호출은 생성자에서 첫 번째 줄의 코드에 나와야 해서
public class Apple extends Fruit{ private String color = "red"; public Apple(String name, String flavor){ String color = this.color; super(name, color, flavor); }같은 형태도 불가능하다. 그래서
public class Apple extends Fruit{ public Apple(String name, String flavor){ super(name, "red", flavor); }로 일단 짜긴 했는데 더 좋은 방법이 있을지 궁금하다. 이건 좀 난잡한 코드인 것 같다.
7. Q ¶
제 이름으로 된 새로운 페이지를 만들고 싶어서 https://wiki.zeropage.org/wiki.php/새페이지만들기
을 참고해서 Go에 제 이름을 쳤는데, 자꾸 이 링크로 접속이 되네요. 이건 어떻게 해결해야 할까요? 이 페이지를 삭제하고 제 페이지를 만들고 다시 이 페이지를 복구해야 할까요?
그리고 정모 링크가 올라오는 사이트가 혹시 따로 있나요?
감사합니다.
- 이유는 모니위키가 '/' 기준으로 하위 페이지를 구분 해서 이 페이지의 이름도 '김동영'으로 인식해서 그런 것 같은데여. https://wiki.zeropage.org/wiki.php/김동영?action=edit << 다른 페이지 만들기로 들어가서 페이지 이름 값만 바꿔 넣은건데 이거 주소창에 쳐서 해볼래요? 정모 사이트는 카톡같은데 있을 것 같은데 잘 모름... 회장단한테 말씀드림 - kjm
- └ 감사합니다..!! 김동영
- └ 감사합니다..!! 김동영