전체 글 47

예외처리하기

예외처리 해보기 예외처리란?개발자가 작성한 코드에서 발생할 수 있는 오류를 사전에 방지하는 것!!! 하지만 아직 이해가 부족하다... 우선 어찌어찌 작성은 했기 때문에 코드를 먼저 올려놓고 해석해보자.  public double cal () { double result = 0; String msg = ""; switch (saChic) { case '+': result = addOperator.operate(n1,n2); break; case '-': result = subtractOperator.operate(num1,num2); ..

TIL 2024.05.01

숫자 N을 B 진법으로 나타내기

문제: 10진수 N을 B 진법으로 나타내는 코드를 만들어라. 과정: 문제를 보고 처음 든 생각은 2진법 말고는 기억이 잘 나지 않는다는 것 이였다.정확히는 n진법의 원리에 대한 이해가 덜 잡혀 있었다. 막막했다. 문제에 접근하는 것 조차 힘들었다.그 때 마침 같이 공부하던 분들이 N진법이란 무엇인가 원리를 이해하는데 도움을 주었다.(원호님 규리님 항상 감사합니다ㅠㅠ) 16진법에서  f 다음 10이 된다는 것을 이해하는 것에는 꽤 오래걸렸지만 표로 정리를 하니 이해가 금방 가능했다.표로 정리를 하다 보니 코드를 짜는 로직이 머릿속에 떠오르기 시작했다. 알고리즘 문제를 접하기 전 이였다면 원리를 알아도 쉽게 접근 하지 못하였을 텐데 얼마전 풀었던 알람 문제중 시간을 나타내는 방법이 떠오른 것이다.시간 표현을..

상속과 오버라이딩(Overriding)

오버라이딩!! 이해라도 해보자!! 필요한 이유부모 타입의 기능을 자식에서는 다르게 재정의 하고 싶을 수 있기 때문!! 오버라이딩이란부모에게서 상속 받은 기능을 자식이 재정의 하는 것을 메서드 오버라이딩(Overriding)이라 한다. 사용방법package extends1.overriding;public class Car {public void move() {System.out.println("차를 이동합니다.");}public void openDoor() {System.out.println("문을 엽니다.");}}부모클래스(Car)package extends1.overriding;public class ElectricCar extends Car {@Overridepublic void move() {Sys..

TIL 2024.04.30

인터페이스

인터페이스!!! 조금이라도 이해해보자!!! 인터페이스자바는 순수 추상 클래스(모든 메서드가 추상인 클래스) 를 더 편리하게 사용 할 수있는 인터페이스라는 기능을 제공한다.● 인터페이스의 메서드는 모두 `public` , `abstract` 이다. -> 굳이 적지않아도 자동으로 적용됨●메서드에 `public abstract` 를 생략할 수 있다. 참고로 생략이 권장된다. ●인터페이스는 다중 구현(다중 상속)을 지원한다. -->  인터페이스의 존재이유 사용방법public interface InterfaceAnimal { void sound(); void move();}public abstract 키워드 생략이 가능하다.인터페이스는 `class` 대신에 `interface` 로 선언하면 된다. `sound()..

TIL 2024.04.29

추상클래스

추상클래스!!! 이해라도 해보자!!! 추상클래스이름 그대로 추상적인 개념을 제공하는 클래스 이기 때문에 실체인 인스턴스가 존재하지 않는다.상속을 목적으로 사용하고 부모클래스 역할을 담당한다. 사용방법ex)abstract class AbstractAnimal {...}클래스를 선언할 때 앞에 abstract 키워드를 붙여준다.추상 클래스는 기존 클래스와 같다. 다만 new AbstractAnimal() 와 같이 직접 인스턴스를 생성하지 못하는 제약이 추간된 것이다. 추상 메서드이름 그대로 추상적인 개념을 제공하는 메서드 이기 때문에 실체가 존재하지 않고, 메서드 바디가 없다.상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 부모 클래스에 정의할 수 있다. 사용방법public abstract void s..

TIL 2024.04.27

상속 정복하기

상속!! 이해라도 해보자 개인과제로 계산기를 만들다 상속 관계를 만드는 곳에서 완전 막혀버렸다. 활용 할 수 없다는 것은 아직 손에 익숙하지 않기 때문일 수도 있지만, 내가 생각하기에는 이해가 부족하다!! 주말시간을 활용해 한번 이해해 보자. 상속이 필요한 이유 전기차와 가솔린차는 자동차(Car) 의 구체적인 개념이다. 반대로 자동차(Car)는 전기차와 가솔린차를 포함하는 추상적인 개념이다 . 그래서인지 잘 보면 둘의 공통 기능이 보인다. 바로 이동( `move()` )이다. 전기차든 가솔린차든 주유하는 방식이 다른 것이지 이동하는 것은 똑같다. 이런 경우 상속 관계를 사용하는 것이 효과적 이다. 상속관계상속은 객체 지향 프로그래밍의 핵심 요소 중 하나이다. 기존 클래스의 필드와 매서드를 새로운 클래스에..

TIL 2024.04.27

계산기 만들기

계산기를 프로그래밍 해보자 우선 과정을 거치때 마다 commit을 해주기 위해 인텔리제이와 깃허브를 연동해보자.  세팅에서 깃허브를 찾아준뒤 연동한다. 연동은 성공했지만 작은 문제가 생겼다.문제점깃허브의 default 는메인에 연결되어 있는데 나의 깃은 master 브런치에 연결되어 있어 커밋&푸쉬를 할때마다 브런치가 계속 생성되고 있다는 점, git checkout main 을 해도 main에 접근하지 못한 다는 점 해결법우선 해결을 하기 위해선 원인을 알아야 하기에 튜터님에게 질문을 해 보았다. 튜터님께서 왜 문제가 생긴지 이유를 설명해 주셨다.  이유: 지금 main으로 접근하지 못하는 이유가 깃허브에서는 main이라는 이름의 브렌치에 git init이 되어있고, 나는 master란 이름의 브런치에..

TIL 2024.04.26

별찍기 (하드버전)

그간 수많은 별찍기 경험으로 생각해낸 모양다이아몬드 가능하지 않을까? 라고 생각하던중 다른분이 백준에서 다이아몬드 문제를 발견하셨다.그래서 바로 도전하러 갔다.사실 별찍기를 하는게 크게 도움이 될까? 생각했는데 이번에 프로젝트 하면서 유동적인 변수를 함수로 만들 때이중 포문을 이해하고 있었더니 내가 원하는걸 바로 머릿속에 그릴 수 있다는 장점이 있었다.그래서 별찍기도 한번씩 감을 잃어 갈때 쯤 꼭 해봐야겠단 생각이 들었다.package practice.backjun.loop;import java.util.Scanner;public class Star4 { public static void main(String[] args) { Scanner scanner = new Scanner(Sys..

TIL(4)

오늘 한일백준 풀기 - Buffer 에 대한 심오한 이해강의 듣기 -  2주차 과제, 3주차(객체에 대한 수업)  백준을 풀다보니 버퍼에 대한 문제가 나왔다.특징은 스캐너가 쓰레기를 하나씩 버리는 느낌이라면 버퍼는 한번에 모아서 버리는 느낌이라는 점?장점은 크만큼 처리속도가 빠르다! 근데 아직 익숙하지 않아서 쓰기가 어렵다.package practice.backjun.loop;import java.io.*;import java.util.StringTokenizer;public class Buffer1 { public static void main(String[] args) throws IOException { BufferedReader br = new ..

TIL 2024.04.24