Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

이것저것

[2020 모각코] 6회차(2020.07.16.) 본문

2020 하계 모각코

[2020 모각코] 6회차(2020.07.16.)

수빈최 2020. 7. 16. 18: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클래스까지밖에 작성하지 못했고 이번에 완성하지 못한 나머지 부분은 다음 회차가 되기 전까지 이 글에 추가해둬야겠다. 단순한 개념들을 복습하고 비교적 쉬운 과제들을 하다가 이번 텀프로젝트를 보니 역시 바로 문제를 해결할 수는 없었다. 그러나 저번에 한번 했던 걸 다시보니 어떻게 이 문제를 해결했는지 어렴풋이 생각이 나는 것 같아 다시금 복습의 중요성을 깨달을 수 있었던 것 같다.