상세 컨텐츠

본문 제목

프로그래머 도전기 14일차

프로그래머가 될거야!

by Choyee 2023. 9. 11. 23:58

본문

새로운 한 주의 시작입니다~

오늘은 학원 수업을 마치고 집에 와서

계산기의 문제점을 개선해보았습니다

결론적으로는 기능에 큰 문제가 없는 사칙연산 계산기가

무사히 완성이 되었답니다~

 

<<오프라인 JAVA 강의>>

 

<컴퓨터 언어>


* 문법체계
- ; 세미 콜론을 붙임
- 주석처리 방법
  // = 한줄 주석
  /* ~ */ = 여러줄 주석

 

* 관례적 체계
- 표기법 : 낙타표기법(Camel) -> scorePoint,
 (파이썬 : 뱀표기법(Snake) -> score_point)

변수 = 값 1개, 변하는 값 -> int num = 10
상수 = final - 정해진 값, 수정 불가 -> final int NUM = 100
자료형 ( int, double, char, String, boolean)

배열 - 2개 이상의 자료
-> String[ ] carrs = new String[4]

연산자 - 산술, 비교, 논리

제어문(명령문) - 조건문(if, switch-case), 반복문(while, for)
-> if(비교조건) {
   }else {
   }

함수(funtion, mthod)
-> void 함수이름( ) {

   }
-> public = 접근제어자, void = 반환값이 없음
   -> public void 함수이름( ) {

       }

클래스 - 가장 큰 자료형 => 3요소 : 필드, 생성자, 메서드 //
                                           생성자 = 필수요소 / 필드, 메서드 = 없을수있음
-> 클래스이름{
      main( ) { }
   }

-> 클래스이름{
      변수,
      상수
      배열

      생성자
 
      일반함수( ) { }

   }
​------------------------ 지난주 복습 -------------------------

 


​<클래스>


프로젝트
패키지
클래스 파일

실제 파일 이름
-> 패키지이름. 클래스이름 @ac12f3d

* 패키지 안에 패키지 -> 상위패키지이름.하위패키지이름 -> 생성


객체 = 의사나 행위가 미치는 대상
클래스 = 개체를 코드로 구현한 것
인스턴스 = 클래스가 메모리 공간에 생성된 상태

다른 패키지에 있는 클래스 => import 사용 불러오기
같은 패키지에 있는 클래스 => 클래스이름으로 호출


접근 제어자 - public = 외부 클래스에서 접근 가능 (import 가능)
                private = 클래서의 외부에서 클래스 내부의 멤버 변수나 메서드에 접근 못하게 하는 경우 사용(import 불가능)
                             -> 변수에 대해 -> (public) set(), get()메서를 만들어서 접근
                            필드(멤버변수)에 접근할 수 없도록 함

입력, 저장 방법 - 1. 기본생성자 => setter 저장 = public void set( ) { }
                                                             -> public 자료형 get( ) {
                                                                        return;
                                                                  }
                     2. 매개변수가 있는 생성자 => 매개변수

0123




this 키워드 => 변수의 이름이 같아질 때 내부 멤버에 this를 붙여준다
             -> this.이름 = 이름;
             = 자신의 메모리를 가리킴
             = 다른 생성자를 호출할 때에도 사용 가능

01




클래스가 2개 이상일 때의 관계
1. 참조 관계 (참조하는 클래스, 참조당하는 클래스-자료형)
2. 협력 관계 (독립적인 관계)
3. 상속 관계(소속, 포함관계)



점(x, y) 클래스
원(점(a, b), radius) 클래스

 

0


과목(이름, 점수)
학생(이름, 학년, 과목)​

0

클래스간 참조
Point 클래스
public class Point {
    int x = x;
    int y = y;
}

01

오늘 자바수업에서는 클래스에 대해서 배워봤는데 클래스를 나눠서 저장하고

메인 클래스에 불러와 메인 클래스를 깔끔하게 사용할 수 있다는 장점이 있다는 것을 알게되었습니다

각 클래스가 하나의 부품이 되어 메인 클래스를 구성해 가며 프로그램이 작동되는것을 보고 

활용가능성이 굉장히 높구나 하는 생각이 들었습니다

 

 

 

<<파이썬 응용>>

<계산기 오류 수정>

 

계산기를 만들어 놓고 보니 

나누기 연산을 할 때 0으로 나누게 되면 

"0으로 나눌 수 없습니다" 라는 문구가 나오고나서

다른 숫자들을 계속 입력할 수 있다는 오류가 있었습니다

 

1차 시도로는 C 버튼만을 활화시켜 C 버튼을 누르도록 수정했습니다

하지만 다른 버튼들로도 쉽게 리셋이 가능하면 좋겠다 라는 친구의 의견을 듣고

 

2차 수정에 들어갔습니다

0

생각보다 쉽지 않았는데, select() 함수의 내용을 수정하여

"0으로는 나눌 수 없습니다" 라는 출력이 나오고 난 후에 아무 버튼 입력을 통해

처음부터 다시 시작하게 되는 기능을 넣었습니다

 

사실,

문구가 뜬다면 아무 버튼을 눌러 리셋이 되게 하는 조건식을

어디에 넣어야할까 고민을 굉장히 많이 하고 검색해보다가

문득 버튼과 상관없이 리셋이 되면 편하겠다는 생각이 들어

자동으로 리셋이 될 수 있도록 하는 기능도 넣어보았습니다

0

root() 메서드를 사용하여 2초가량의 텀을 가진 후에 리셋이 되도록

기능을 추가한 계산기 입니다

하지만 원래의 목표는 아무 버튼을 눌러서 리셋을 시키는 것이었기 때문에

2차 수정본처럼 결과를 만들었습니다

 

0으로는 나눌 수 없습니다 문구이후의 입력 문제를 해결한 후에

다시 검토를 해보다가 또 다른 문제가 생겼는데

그것은 바로... 처음부터 사칙 연산 부호들의 입력이

가능하게 되어있어 처음부터 숫자가 아닌 사칙연산 기호들이

먼저 들어가게 되면 계산기가 제대로 작동을 하지 않는다는 것이었습니다

그래서 마지막 수정에 들어가게 되었습니다

 

for문 안에 있는 if문 조건식(if - not in - else 구문)을 추가하여

계산기의 시작과 0으로 나눴을 때의 오류 발생문구 이후에는

사칙연산 기호의 버튼이 작동하지 않도록 수정하였습니다

 

이로써 큰 오류가 발견되지 않은

꽤 괜찮은 계산기를 만들게 되었습니다

 

하지만 보시다시피 디자인이 굉장히 심플하여

내일은 UI를 꾸미는 시도를 해볼까 합니다

 

문제가 발생하고 수정을 반복하는 과정에서

if문 조건식의 다양성과 그러한 조건식들을 함수 어느 부분에 배치해야 하는지 고민을 하면서

함수의 구조, 함수들의 관계에 대한 이해도가 높아진 느낌입니다

학원에서 클래스간의 활용을 배움과 동시에 이런 버그 수정 과정을 거치면서

성장해나가고있는 기분입니다

 

 

 

2023. 09. 11 (월)

관련글 더보기