ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (국비교육) 18 - C언어 맛보기 + 예외처리 + Tomcat 다운로드 + 웹브라우저 만들어보기 + 중복클래스
    개발/국비교육 2023. 6. 26. 11:48

    ■ c언어 맛보기

     

     

    c언어는 문장의 처음과 끝을 맞춰준다.

    {

    }

     

     

    배열 표시와 반복문은 다음과 같이 표현할 수 있다.

     

     

    size of 는 바이트 크기를 말한다.

    double 은 8byte 이기 때문에 8이 나온다.

     

     

    2021 #정보처리기사 필기요약 #4-2. 프로그래밍 언어 활용 (tistory.com)

     

    2021 #정보처리기사 필기요약 #4-2. 프로그래밍 언어 활용

    2021년 NCS기반 정처기 필기입니다. 참고1. 노랑마킹은 시험에 나온 중요한 부분입니다. 참고2. 주황강조는 약어 혹은 중요한 내용입니다. 참고3. 회색마킹은 예시입니다. 제 4과목 프로그래밍 언어

    simuing.tistory.com

     

    ■ 예외처리 (p. 453)

     

    예외의 정의 = 실행시에 발생할 수 있는 모든 에러상황으로 기억

    자바에서는 예외가 발생하는 순서가 있다.
    컴파일 -> 실행 -> 실행중 예외발생 -> VM 이 발생된 예외의 종류 및 내용 파악
    -> 예외 객체 생성 -> 발생된 코드 밖으로 예외 객체를 던짐(throw) ->
    예외의 콜 스택에 전이 -> main 메소드 밖까지 던지게 되면 프로그램 강제종료
      
    위처럼 예외는 던지다라고 표현한다.
    또한 예외는 객체이기 때문에 당연히 클래스로 정의되어 있다.
      
    예외의 최고 클래스는 lang 패키지의 Throwable 이다.
    여기에 자식으로는 Error 와 Exception 이 있다.
    Error 의 하위 타입은 일반적으로 자바 실행기 즉, VM 에 관련된 에러 상황들을 정의한 클래스 이다.
      
    이러한 문제(에러상황)는 프로그래머가 처리할 수 없는 것이다.
    VM, JRE 전체의 문제이다.
      
    따라서 프로그래머는 Error 하위 타입의 예외들(에러들)은 처리하지 않고 무시한다. (처리할 수 없다.)

     

    Exception 이란 클래스의 하위 타입이 바로 프로그래머가 처리해야 할  예외 타입들 이다.
    따라서 보통 예외다 라고 표현할 때 최고 클래스는 Exception 클래스 이다.
    Throwable 클래스는 자식으로 Error 를 가지고 있기 때문에 예외의 최고 클래스라고 표현하지 않는다.
      
    예외의 종류
    크게 두 가지로 나뉜다.


    컴파일러가 관여하지 않으면서, 실행시에 예외가 발생 할 수도,

    안 할 수도 있는 예외 = 알려지지 않은 예외(UnChecked Exception) = 실행예외
    컴파일러가 관여하는 예외 = 알려진 예외(Checked Exception) = 일반예외

    EX) 빨간색 밑줄 표시 

     

    구분하는 방법은 Exception 하위 클래스 중 RuntimeException 이 있는데
    해당 클래스의 자식 클래스는 모두 알려지지 않은 예외이다.
    나머지는 모두 알려진 예외이다.

     

     

    코드 상으로 문제는 없지만 컴파일 시 잘못된 것들 우리가 핸들링해서 정상적으로 종료시키는 것

    EX) 배열 밖으로 빠져나간 것 (실행예외)

     

     

    예외가 발생할 것 같은 문장을 try 문에 넣어주고

    문제가 없다면 try 문, 그렇지 않다면 catch 문이 출력된다.

     

    숫자는 아스키코드로 나오기 때문에 -48 을 해줬다.

     

     

    String2 라는 클래스가 존재하지 않아서 catch 문장과 마지막 문장 실행 (try 실행x)

     

     

    String 라는 클래스가 존재해서 try 문장과 마지막 문장 실행 (catch 실행x)

     

     

    FileReader : 자바의 입력과 출력 담당 (자바 밖으로 가서 파일을 읽어옴)

    만약 파일을 찾지 못할때 어떻게 처리할지를 try catch 로 작업해준다.

     

    윈도우 + E 버튼으로 로컬 디스크 들어가서 temp.txt 파일 하나 생성해주기

     

     

    파일이 있어서 try 문 출력된다.

     

     

    상황에 맞는 catch 문장 설정 가능하다.

    파일이 없을때 catch 문과 파일을 읽어들일 수 없을 때 catch 문 설정이다.

     

     

    finally : 예외 발생 유무와 상관없이 반드시 실행할 문장, 닫기 명령문

     

    포트를 열었으면 웬만하면 닫아줘야 한다. 

    따라서 finally 문에서 닫기 명령문을 try catch 로 닫아준다.

     

    ■ 예외 처리방법 (p. 460)

     

    1. 직접처리


            try{
                 Exception 이 발생할 코드
            } catch(Exception e) {
                 예외가 발생하면 실행할 코드
            } finally {
                 예외 발생여부와 상관없이 공통적으로 실행할 코드
            }


    2. 던지기 (Throw)
    메소드 뒷 부분에 throw 처리할 타입을 적어줍니다.
    메소드가 실행되다가 예외를 만나면 메소드를 호출한 쪽으로
    예외를 던집니다.
    이 던지기가 main 메소드까지 온다면 vm 으로 던지고 강제 종료됩니다.

     

    3. 직접 Exception 객체를 만들어서 처리하기 (많이 안씀)

        예외 객체를 만들어서 처리하기

     

           throw 객체명;

                 @override

                  public void printStrackTrace(){

                         System.out.print("예외가 발생했습니다.");

                         super.printStrackTrace();

                  }

     

     

    해당 배열 길이를 넘어서는 index 를 가지고 있기 때문에

    출력 시 배열 길이 밖으로 나갔어요. 라는 출력문이 나오고 프로그램 종료 된다.

     

     

    출력문을 볼 수 없는 이유는 arr01[arr01.length] 로 인해

    try문은 출력되지 않고 catch 문으로 가기 때문이다.

     

     

    0으로 나눌 수 없기 때문에 다음과 같이 뜬다. 

     

     

    따라서 0으로 나눌 수 없는 catch 문을 작성해주면 해당 내용이 출력된다.

     

     

    finally 문은 예외 발생 유무와 상관없이 실행된다.

     

     

    tyr catch 안에 try 들어가서 실행도 가능하다. (이중 try)

     

     

    fr 을 닫아주는 작업의 경우 데이터 스코프의 범위에 따라 fr 이 존재하는 try구문에서 닫아줘야 한다.

    sc.close() 의 경우 아예 문장 밖에 있으니 finally 에서 닫아줘도 무방하다.

     

     

    * 관련 정처기 필기 문제

     

    http://www.tcpschool.com/java/java_exception_intro

     

    코딩교육 티씨피스쿨

    4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

    tcpschool.com

     

    ■ Tomcat 다운로드 (사이트 링크 하단)

     

     

    tomcat 9 zip 다운로드

     

     

    다운받은 파일 로컬디스크 c 로 드레그하여 복사

    (웹서버 프로그래밍 진행 위해)

     

     

    이클립스 버전 확인하기

     

     

    해당 톱니바퀴가 있어야 웹개발도 가능한 버전이다.

     

     

    New -> Project

     

     

    Web -> Dynamic Web Project -> Next

     

     

    Finish  클릭

     

     

    Finish  클릭

     

     

    Finish  클릭

     

     

    해당하는 프로젝트 선택 -> New -> JSP File

     

     

    index.jsp 로 새로 생성

     

     

    서버 연결하기 위해 파란줄 클릭

     

     

    Tomcat v9.0 server 선택 후 next

     

     

    Browse 누른 후 우리가 복사한 로컬디스크 c 에 있는 파일 클릭

     

     

    우리가 입력한 내용을 출력하기 위해서는

    프로젝트 -> Run As -> Run on Server

     

     

    Finish  선택

     

     

    액세스 허용 누르면 화면이 바뀐다.

     

    </> 있으면 닫는 태그

    <h1> 헤드라인

    <h2> 조금 작은 헤드라인

     

     

     

     

    <% %> 자바 코드 부분이며, 해당 부분은 화면에 보이지 않는다.

     

    JSP : Java Server Page

    자바로 서버 페이지를 만든다.

    서버에서 먼저 컴파일 후 결과를 사용자에게 보여줍니다.

     

     

    자바 코드를 통해 i 반복문을 사용할 수 있다.

    다만 자바를 마지막에 닫아주는 이유는 우리는 html 에 i 를 활용해야 하는데 

    위에서 닫아버리면 데이터 스코프로 인해 i 를 활용하여 화면에 보일 수 없기 때문이다.

     

     

    <h1> 가장 큰 글

     

     

    <a href = ""></a>

    앵커태그(이동태그) : 내가 원하는 곳으로 이동

     

    네이버로 링크 연결돼서 이동 가능하다.

     

     

    자바 html 태그가 붙은 값 11이 나온다. 

     

     

    반복문도 다음과 같이 실행할 수 있다.

     

    * 2단 출력하기

     

    * 메인 인덱스 오가기

     

    앵커태그를 이용하여 인덱스와 메인 연결해주기

     

     

     

    <table> 테이블을 생성하며 border = "1" 은 한 줄을 의미한다.

    <tr> 테이블 한 줄 

    <td> 테이블 한 칸

     

    * 10줄 반복하기

     

     

    ■ 스타일 설정하기

     

     

     

    style="" 을 통해 스타일 설정이 가능하다

    넓이는 width 로, 높이는 height 로 조절 가능하다.

     

    width 크기는 다음과 같이 조절 가능하다.

    - auto : 자동

    - 100% : 브라우저 전체 다 차치

    - ~px : 내가 크기 조절

    EX) 500px

     

    text-align : 가운데 정렬

     

    * 단위 명령 내리기

     

     

    단위 명령은 title 밑에서 style 설정을 해준다.

     

    <style type="text/css">

    /* 스타일 영역입니다. */

    선택자 {

    속성 : ;

    }

    </style>

     

     

     

    별도로 title 테이블 한 줄만 왼쪽 정렬 설정 가능하다.

     

     

    border : 선 긋기

     

     

    border-bottom : 1px red dotted; : 점선으로 아랫줄에 빨간색 선 긋기

     

     

    boder-collapse : collapse; : 끊김 없이 이어주기

     

    * 호버

     

     

    마우스 클릭은 아니지만 마우스가 있는 곳을 색칠하기

    - background-color: gold;  : 배경색 설정

    - color: red; : 선택한 부분 글자

     

    * 말풍선 글 만들기

     

    title = "" : 마우스 올리면 말풍선 글이 보인다.

     

     

     

    프로젝트 완료되면 close Project 로 눌러 컴파일 되지 않게 설정해준다.

     

    ※ Tomcat 언어 및 단축키 설명

    <hr> : 한줄 선 긋기

    Ctrl + Shift + ? : 주석 만들기

    <br> : 엔터 치기

    <p> : 문단 만들기

    <br> : 엔터 치키

    <% %> : 자바 코드 실행 가능(우리는 자바 이용)

     

    https://tomcat.apache.org/

     

    Apache Tomcat® - Welcome!

    The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the

    tomcat.apache.org

     

    ■ 중첩 클래스 (= 내부 클래스, p. 406, 자주 사용x) 

     

    클래스 속에 클래스가 있다.
    메소드 속에 클래스가 있다.

     

    * 장점 ========
    내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
    캡슐화, 코드의 복잡성을 줄여준다.
    내부 클래스가 외부 클래스의 부품을 활용될 때.
    내부 클래스는 잘 활용되지 않을 때.

     

    보통의 클래스는
    class A{}

    class B{}

     

    내부 클래스는
    class A{
     
        class B{}
    }

     

     * 종류
     - 정적 멤버 클래스 : 외부 클래스의 멤버 변수 위치에 선언
        스타틱 클래스       스타틱 멤버처럼 다뤄진다. 
                                      주로 외부 클래스의 스타틱 멤버, 특히 스타틱 메소드에 사용될 목적으로 선언한다.

    - 멤버 클래스 : 외부 클래스의 멤버 변수 위치에 선언
                            인스턴스 멤버처럼 사용됩니다.
                             주로 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용.
     
     - 지역 클래스 : 외부 클래스의 메소드나 초기화 블럭 안에서 선언.
                             선언된 영역 내부에서만 사용됩니다.

    - 익명 클래스 : 클래스 선언과 객체의 생성을 동시에 하는 이름없는 클래스
                            (일회용)

     

     

    Q) 오류나는 이유 ?

     nestedMethod() 가 innerMember  출력을 요청했는데

    위에 innerMember 는 static 이 없어 객체를 생성해줘야 한다.

     

    객체 생성 없이 먼저 불렀기 때문에 오류가 나므로 innerMember에 static 을 붙이면 오류가 사라진다. 

     

     

    Q) 값 변경 가능..?

    final 아닌 경우 객체 값을 변경할 수 있다.

     

    외부객체 내부객체를 통한 in 객체를 생성하면

    내부객체의 메소드를 호출하거나 필드값 변경이 가능하다.

     

     

    Q) 정적 멤버 클래스로 모든 종류의 필드와 메소드 이용할 수 있다 보여준 예시? 

     

    정적 멤버 클래스로 생성자, 인스턴스 필드 및 

    static 필드와 메소드도 부를 수 있다.

     

    * 정적 클래스 정리

    정적 클래스 static class = 정적 멤버 클래스

    class 앞에 static 이 붙는다. 객체 생성 없이 사용한다.
    클래스의 static 변수처럼 사용한다. 외부 클래스와 내부 클래스는 다르게 동작한다.
    외부 클래스와 내부 클래스의 멤버가 private 이더라도 상호 모두 접근 가능하다.
    경로만 지정되면 단독으로 직접 사용할 수 있다.

     

    * 멤버 클래스

     

    외부 클래스에서 내부 클래스 객체 생성이 가능하고,

    그에 대한 메소드와 필드를 내것처럼 호출할 수 있다.

     

    외부클래스 먼저 생성하고,

    외부 클래스를 통해 내부 클래스를 생성한 in 을 통해 내부클래스 메소드 사용 가능하다.

     

    * 멤버 클래스 정리

    내부에 있는 앞에 static 붙으면 정적 클래스
    내부에 있는 클래스 앞에 아무것도 없으면 멤버 클래스

    내부 클래스는 클래스 내에 선언되었으므로 인스턴스 속성처럼 사용된다.
    즉 메소드 {} 안에서 유효하다.

    내부 클래스는 외부 클래스의 멤버를 사용할 수 있지만,

    외부 클래스는 내부 클래스의 멤버변수를 사용할 수 없다.
    또한 static 붙은 메소드 내에서는 내부 클래스의 객체 선언은 X

     

    * 요청사항

    - UTF-8 이란?

    유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.

    UTF-8은 유니코드를 인코딩(encoding)하는 방식이다.

Designed by Tistory.