소개
유튜브에서 코딩 교육 채널을 운영하고 있는 나도코딩입니다.
누구나 쉽고 재미있게 코딩을 공부하실 수 있도록 친절한 설명과 쉬운 예제로 강의합니다.
코딩, 함께 하실래요? 😊
🧡 유튜브 나도코딩
🎁 코딩 자율학습 나도코딩의 파이썬 입문
📚 코딩 자율학습 나도코딩의 C 언어 입문
강의
로드맵
전체 1수강평
- 파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)
- 파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
게시글
질문&답변
재생이 안됩니다ㅠㅠ
안녕하세요?먼저 학습에 불편드려 대단히 죄송합니다.현재는 확인 결과 동영상 재생이 잘 되는 것 같습니다.일시적으로 인프런 서비스에 문제가 있었던 것 같은데, 혹시 여전히 안되신다면 답글 남겨주시면 인프런 측에 문의해보도록 하겠습니다. 😊감사합니다.
- 0
- 2
- 36
질문&답변
final String과 int의 차이점
안녕하세요?네! 맞습니다. int 가 아닌 String 을 쓴 이유는 말씀하신 것처럼 국가 코드 82 앞에 + 기호를 포함하기 때문입니다. ^^감사합니다.
- 0
- 2
- 63
질문&답변
인텔리제이 설정 문제로 빌드가 안됩니다.
안녕하세요?기존에는 잘 되시다가 갑자기 안되시는 것일까요? 아니면 처음부터 안되셨나요?자바 기본편 내용 말고 또 다른 프로젝트 (스프링 등) 를 동일한 환경에서 진행중이신가요?상황에 따라 처리 방법이 다를 것 같은데, 아래 링크들의 설명을 따라서 해결을 시도해보시면 좋겠습니다.https://warmth424.tistory.com/9https://velog.io/@ju0song/IntelliJ-Error-Could-not-find-or-load-main-class-java-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95-upndfrx3https://4ngeunlee.tistory.com/397https://chobocho.tistory.com/2461433https://sabo.tistory.com/3위 방법으로도 해결이 되지 않으신다면 다시 질문글을 남겨주시면 추가로 확인해보도록 하겠습니다. IntelliJ 하단 출력 창에 나와지는 모든 내용을 복사 붙여넣기 해주시면 도움될 수도 있습니다.감사합니다.
- 0
- 3
- 179
질문&답변
QUIZ8 질문입니다.
안녕하세요?코드 하단에 보니 아마 자동으로 생성된 것으로 보이는 불필요한 메소드 2개가 추가되어 있네요. 이 둘을 없애면 올바로 동작할 거에요 😊 // 삭제해주세요 public void setDetector(AccidentDetector accidentDetector) { } public void setReporter(VideoReporter videoReporter) { }삭제 후에도 계속 문제가 된다면 다시 질문글 남겨주세요!감사합니다.
- 0
- 2
- 35
질문&답변
참조 관계를 끊고 다시 값을 입력하는 곳에 있어 질문이 있습니다
안녕하세요?그림으로 설명을 드리면 조금 더 이해가 수월할 것 같습니다 😊먼저 새로운 Camera 객체를 2개 만들고 각각 cam1, cam2 라는 이름으로 이들을 참조, 즉 가리키도록 합니다.Camera cam1 = new Camera(); // 파란색 타원 Camera cam2 = new Camera(); // 주황색 타원이를 그림으로 표현하면 이렇습니다.(사진) 그런 다음, tempCam1 과 tempCam2 를 만들면서 각각 cam1 과 cam2 가 참조하고 있는 객체를 참조하도록 합니다.Camera tempCam1 = cam1; // 파란색 타원 참조 Camera tempCam2 = cam2; // 주황색 타원 참조위와 같이 코드를 작성하게 되면 실제 모습은 다음과 같습니다. tempCam1 은 cam1 과 같은 파란색 타원을, tempCam2 는 cam2 와 같은 주황색 타원을 가리키게 됩니다.(사진)그런 다음에 cam1 과 cam2 에 null 을 대입함으로써 더 이상 기존의 객체를 참조하지 않도록 합니다.cam1 = null; cam2 = null;그림으로 표현하면 이렇게 되지요. 단, 이때 tempCam1 과 tempCam2 는 여전히 파란색 타원과 주황색 타원을 참조하고 있습니다.(사진) 이제 다시 cam1 과 cam2 를 각각 tempCam1 과 tempCam2 가 참조하고 있는 객체를 참조하도록 합니다.cam1 = tempCam1; cam2 = tempCam2;다시 이전의 상황과 동일한 모습이 되겠네요.(사진)이후에는 cam1 또는 tempCam1 을 통해 파란색 타원의 객체에 접근할 수 있으며, cam2 또는 tempCam2 를 통해 주황색 타원의 객체에 접근할 수 있게 됩니다.궁금증 해결에 도움되었으면 합니다 🙌감사합니다.
- 0
- 2
- 36
질문&답변
클래스 객체에 대해서 궁금한 것이 있습니다.
안녕하세요?보다 쉬운 이해를 위해 클래스를 물건을 정리하는 필통이라고 생각해 볼 수 있습니다.필통 안에는 연필, 지우개, 자 같은 물건들이 들어있습니다. 만약 필통이 없다면, 각각의 물건을 개별적으로 주머니나 가방에 넣어 다니거나 손에 들고 다녀야 하겠죠. 그러면 매번 연필을 꺼내려 할 때마다 어디 있는지 찾아야 하고, 지우개나 자도 어디에 넣었는지 헷갈릴 것입니다. 어쩌면 물건을 잃어버릴 확률도 높아질 수 있어요.클래스는 이 필통과 같습니다. 여러 관련된 데이터를 한 곳에 모아두는 "정리 도구"라고 할 수 있습니다. 예를 들어, 학생을 나타내는 클래스를 만든다고 생각해 볼까요? 학생은 이름, 나이, 학번 같은 정보를 가지고 있습니다. 이 정보를 개별적으로 관리하면 매우 복잡해집니다. 하지만 학생 클래스를 만들면, 이 모든 정보를 하나의 "필통"에 넣어서 정리할 수 있습니다.class Student { String name; int age; String studentId; }인스턴스 변수는 필통 안의 물건입니다. 예를 들어, name 은 그 학생의 이름(연필), age 는 나이(지우개), studentId 는 학번(자)이라고 볼 수 있습니다. 한 학생이라는 "필통" 안에 이 모든 것을 정리해 두면, 나중에 필요할 때 쉽게 꺼내 쓸 수 있겠죠.Student student1 = new Student(); student1.name = "나도코딩"; student1.age = 20; student1.studentId = "20240001";위와 같이 코드를 작성하게 되면 student1이라는 필통에 나도코딩이라는 학생의 정보가 모두 들어간 것입니다. 만약 이 학생의 나이나 이름이 필요하면, student1에서 바로 꺼내 쓸 수 있습니다.만약 클래스를 사용하지 않고 각각의 정보를 따로 관리한다고 생각해 보면 어떨까요?String name1 = "나도코딩"; int age1 = 20; String studentId1 = "20240001";이렇게 하면 학생이 두 명, 세 명 늘어날 때마다 새로운 변수를 만들고 그 변수들을 각각 개별적으로 사용해야 합니다. 이는 마치 필통 없이 여러 개의 연필, 지우개, 자를 손에 들고 다니는 것과 같아요. 특정 연필을 찾으려고 할 때마다 주머니를 뒤져야 하듯, 변수들을 하나씩 찾아야 하는 상황이 됩니다.하지만 클래스를 사용하면 여러 학생의 정보를 각 필통(클래스 인스턴스) 안에 깔끔하게 정리할 수 있기 때문에 훨씬 효율적입니다.뿐만 아니라, 클래스 객체를 어떤 메소드에 전달하는 경우에도 큰 이점이 있습니다. 만약 클래스를 사용하지 않고 각 데이터를 개별적인 변수로 전달한다면, 메소드의 정의는 매우 복잡해질 수 있어요. 예를 들어, 학생의 이름, 나이, 학번을 처리하는 메소드를 만든다고 가정해 보겠습니다. 클래스를 사용하지 않는다면, 이 메소드는 다음과 같이 여러 개의 매개변수(전달값)를 가져야 하겠죠.public void processStudent(String name, int age, String studentId) { // 학생 처리 로직 }하지만 만약 전달해야 할 정보가 더 많아진다면, 메소드의 매개변수가 계속 늘어나 복잡해질 수 있습니다. 경우에 따라 필요하지 않은 변수를 전달해야 하는 상황이 생기기도 하죠. 예를 들어, 학번이 필요 없는데도 불구하고 메소드에 전달해야 할 수 있습니다.그러나 객체를 전달하면 이러한 문제는 훨씬 간단하게 해결될 수 있답니다. 객체로 모든 관련 데이터를 묶어 전달하면, 메소드 정의가 단순해지고, 필요하지 않은 인스턴스 변수는 그냥 사용하지 않으면 됩니다. 이렇게 하면 여러 데이터를 한 번에 관리하는 측면에서 매우 편리해져요. 아래와 같은 방식으로 클래스 객체를 메소드에 전달할 수 있습니다:public void processStudent(Student student) { // 필요한 정보만 사용 System.out.println(student.name); }이 경우에는 Student 객체를 전달받아 메소드 안에서 필요한 인스턴스 변수만 사용할 수 있습니다. 만약 나이나 학번 정보가 필요 없다면, 단순히 사용하지 않으면 그만입니다. 즉, 메소드가 불필요하게 많은 매개변수를 받을 필요가 없어지고, 데이터 관리와 처리도 훨씬 유연해지는 것이죠.정리하자면, 지금 학습하시는 단계에서 클래스는 관련된 정보를 하나로 묶어서 관리할 수 있게 해주는 필통과 같습니다. 필통이 있으면 물건을 잃어버리지 않고 필요할 때 쉽게 꺼낼 수 있듯, 클래스도 정보를 깔끔하게 정리하고 다룰 수 있게 해주는 중요한 도구입니다. 그리고 객체를 사용하면 메소드 정의가 간결해지고, 불필요한 변수를 제거하는 과정을 고민하지 않아도 됩니다. 이는 결국 프로그램의 유지 보수성과 가독성을 높이는 데에도 큰 도움이 된다는 이점이 있답니다 🙂감사합니다.
- 0
- 2
- 76
질문&답변
generate에서 getter setter가 보이지 않습니다!ㅠㅠ
안녕하세요?작성하신 코드를 보니 modelName, resolution, price, color 변수가 각각 main 메소드 내에 선언이 되었네요 😊 이들은 main 메소드 외부에서는 사용될 수 없으며, 이 경우에는 Getter, Setter 대상에 포함되지 않기 때문에 보이지 않습니다.다음과 같이 main 메소드 윗쪽에 선언해보시면 올바로 보여질 거에요.public class BlackBoxRefurbish { String modelName; String resolution; int price; String color; public static void main(String[] args) { } }해보시고 여전히 안된다면 다시 캡처와 함께 질문글 남겨주시면 확인 후 도움 드리겠습니다 🙌감사합니다.
- 0
- 3
- 82
질문&답변
Catch 안에서 쓰인 throw
안녕하세요?try 구문 내에서 writer.close(); 호출 시 발생할 수 있는 예외를 처리하기 위해 catch 구문에서 RuntimeException을 발생시키고 있습니다. 이 RuntimeException은 현재 메소드에서 발생하는 예외이며, 호출한 메소드에서 처리되지 않으면 프로그램의 최상위 예외 처리기에 전달된답니다. 강의에서 작성한 코드 기준이라면 main 메소드에서 발생한 예외이므로 별도의 catch 구문으로 처리되지 않는다면 JVM (Java Virtual Machine : 자바 프로그램을 실행할 수 있게 해주는 가상 머신) 이 예외를 출력하고 프로그램이 종료됩니다.만약 RuntimeException을 main 메소드 내에서 catch 하고 싶다면, try-catch 구문 밖에 해당 예외를 처리하는 코드로 한 번 더 감싸주는 방법이 있습니다.다음은 강의 코드 기준으로 작성된 보완 코드입니다.public static void main(String[] args) { try { MyFileWriter writer1 = null; try { writer1 = new MyFileWriter(); writer1.write("아이스크림이 먹고 싶어요"); } catch (Exception e) { e.printStackTrace(); } finally { try { writer1.close(); } catch (Exception e) { throw new RuntimeException(e); // 여기서 발생한 예외 } } } catch (RuntimeException re) { System.out.println("RuntimeException 처리: " + re.getMessage()); } }궁금증 해결에 도움되길 바라겠습니다 😊감사합니다.
- 0
- 1
- 47
질문&답변
생성자 대신 Setter 사용 이유
안녕하세요?생성자에서 모두 처리를 하는 경우 객체가 완전히 초기화된 상태로 만들어집니다. 하지만 Setter 를 제공하지 않으면 이를 변경할 수 없게 되지요. 생성자가 아닌 Setter 를 사용하면 객체를 생성 후에도 필요 시 변경할 수 있기 때문에, 객체를 다양한 상황에서 재사용할 수 있습니다. 예를 들어, 초기화 후 다른 detector나 reporter로 설정해야 하는 상황에서 유용합니다. ^^감사합니다.
- 0
- 2
- 53
질문&답변
JDK 설치 질문 (Oracle JDK/OpenJDK)
안녕하세요?강의에서 다루는 내용은 자바 기본 문법이며, 안내드린 Adoptium 외에 편하신 JDK 를 설치하셔서 사용하셔도 무방합니다 ^^감사합니다.
- 0
- 1
- 55