이것저것
[2020 모각코] 6회차(2020.07.16.) 본문
# 6회차 목표: 컴프 8주차 때 했던 클래스와 객체에 대한 복습, term project를 다시 하고 전에 했던 것과 비교
1. 절차지향 프로그래밍
: 문제를 해결하는 절차를 중요시하는 방식으로, 절차들은 모두 함수라는 단위로 묶인다.
데이터와 함수가 분리된다는 것과 변경이나 확장이 어려워진다는 단점이 있다.
2. 객체지향 프로그래밍
: 데이터와 절차가 하나로 묶이기 때문에 분석과 설계의 전환이 쉽다.
객체를 많이 만들면 프로그램 용량이 커질 수도 있으며 처리속도가 상대적으로 느리다는 단점이 있다.
특징 1_ 캡슐화
: 데이터와 알고리즘(코드)를 하나의 묶음으로 정리해 캡슐 형태로 제작하는 것으로, 객체지향에서는 클래스라고 부른다.
특징 2_ 상속
: 기존의 코드를 재활용하기 위한 기법, 이미 작성된 부모 클래스를 이어받아 새로운 자식 클래스를 생성한다.
특징 3_ 다형성
: 상황에 따라 객체가 취하는 동작이 달라지는 것, 서로 다른 객체들이 같은 이름의 함수에 다른 동작을 보여준다.
객체
: 특정 값을 뜻하는 상태와 객체가 취할 수 있는 동작, 총 두가지를 가진다.
객체의 상태는 필드로, 동작은 메소드로 표시한다.
메시지
: 객체 사이의 상호작용을 위한 통신 메커니즘이다.
메시지에는 추가적인 정보가 필요할 때가 있으며 매개변수를 통해 이를 전달한다.
변수의 종류로는 필드(=멤버변수, 전역변수), 매개변수, 지역변수가 있다.
필드는 선언과 동시에 초기화 될 수 있다.
메소드는 하나의 반환값을 가질 수 있으며, 메소드 호출로 값을 받는 경우는 반환값의 타입과 일치해야한다.
메소드를 호출하면 실행하고 있던 메소드는 잠시 중단되며, 호출된 메소드가 실행된다.
호출된 메소드가 종료되면 잠시 중단되었던 원래의 메소드가 다시 실행된다.
+) 필드를 정의하면 위치와 상관없이 클래스 전역에서 사용이 가능하지만 프로그램이 끝날 때까지 메모리의 공간을 차지하므로 공통적으로 필요한 것만 정의할 수 있도록 하는 것이 좋다.
8주차_ term project
public class DecToBin {
public static String convertDecToBin(int num){
//(구현 요구 사항)
//1. For 문을 이용하여 num 값(십진수)을 이진수로 변환
//2. 변환된 이진수 값은 String형 변수에 저장 후 반환
//2.1 이진수 변환시 값의 크기에 관련 없이 총 자리수는 8자리여야 함.
//가령, 255 -> 11111111, 1 -> 00000001, 2 -> 00000010, 15->00001111
//이런 식으로 항상 8자리 이진수로 변환
return null;
}
public static boolean checkBinToDec(String bin, int num){
//(구현 요구 사항)
//1. 이진수로 표현된 bin 값을 int 형 십진수로 변환
//1.1 String 타입의 bin에서 각 비트를 추출할 때, charAt 함수 사용 (사용법은 구글링)
//1.2 char 형의 변수 '0'과 '1'의 아스키 코드값은 48, 은 49임(필요시 사용)
//2. 변환된 십진수와 입력으로 받은 num 값을 For 문으로 비교
//3. 값이 동일하면 True, 다르면 False 반환
//...
return true;
}
public static void main(String args[]) {
int input=0;
String bin;
boolean check;
//(구현 요구 사항)
// 1. Scanner 사용해서 input 변수에 int 형 타입의 입력 받기
// 2. 입력된 값이 1-255 사이가 아닐 경우 다시 입력 받기
//...
System.out.print("1-255사이 10진수를 입력하세요 : ");
//...
// 아래 코드는 변경 하지 말것.
bin = convertDecToBin(input);
System.out.println("이진수 값: " + bin);
check = checkBinToDec(bin, 13);
System.out.println("검증 결과: " + check);
}
}
▲텀프로젝트의 스켈레톤 코드
main: 사용자 입력 처리 및 함수 호출과 인자 전달
convertDecTobin: 정수형 십진수를 받아 문자형 이진수로 변환
checkBinToDec: 이진수와 십진수 입력을 받아 두 수가 일치하는지 비교
+) 스켈레톤 코드(skeleton code)
: 하나의 프로그램이 동작하는 전체 과정을 한 눈에 볼 수 있도록 그 구조를 나타낸 것이다.
public static void main(String args[]) {
int input=0;
String bin;
boolean check;
Scanner num = new Scanner(System.in);
do {
System.out.print("1-255사이 10진수를 입력하세요 : ");
input = num.nextInt();
} while(input<1 || input>255);
bin = convertDecToBin(input);
System.out.println("이진수 값: " + bin);
check = checkBinToDec(bin, 13);
System.out.println("검증 결과: " + check);
}
시간이 모자라 main부분까지밖에 완성하지 못했다. 이는 학기 중 제출했던 것과 차이점이 거의 없어서 비교를 생략한다.
6회차 회고록
: 텀프로젝트를 다른 내용들을 복습하는 시간을 포함한 3시간 안에 끝내려고 했던 계획이 조금 무리가 있었던 것 같다. 그 결과 main클래스까지밖에 작성하지 못했고 이번에 완성하지 못한 나머지 부분은 다음 회차가 되기 전까지 이 글에 추가해둬야겠다. 단순한 개념들을 복습하고 비교적 쉬운 과제들을 하다가 이번 텀프로젝트를 보니 역시 바로 문제를 해결할 수는 없었다. 그러나 저번에 한번 했던 걸 다시보니 어떻게 이 문제를 해결했는지 어렴풋이 생각이 나는 것 같아 다시금 복습의 중요성을 깨달을 수 있었던 것 같다.
'2020 하계 모각코' 카테고리의 다른 글
[2020 모각코] 8회차(2020.08.04.) (0) | 2020.08.05 |
---|---|
[2020 모각코] 7회차(2020.07.28.) (0) | 2020.07.29 |
[2020 모각코] 4회차(2020.07.09.) (0) | 2020.07.09 |
[2020 모각코] 3회차(2020.07.07.) (0) | 2020.07.07 |
[2020 모각코] 2회차(2020.07.02.) (0) | 2020.07.02 |