●자기가 만든 프로그램이라도 몇 주만 지나면 다 까먹는다.

딱 정해진 규칙은 없지만 가독성과 프로그램 흐름을 기억 위해 될수 있으면 다음의 규칙을 따르는게 좋다.

 

 

●변수명 작성 규칙

- 변수명은 될 수 있으면 의미를 가진 단어를 사용한다.

- 첫글자는 소문자로 시작한다.

- 상수는 대문자를 사용한다.

- 동사와 명사가 섞인 변수명을 작성할 때는 동사를 먼저 적는다.

- boolean형의 변수는 접두어로 is나 can을 붙인다.

- 반복문 등의 내부에서 사용하는 변수는 i,j,k를 사용한다.

- class전체에 사용되는 class형의 변수는 접두어로 m이나 g를 붙인다.

- 변수명 오른쪽에 그 변수가 무슨 의미인지 주석처리한다.

 

 

●메서드명 작성 규칙

- 하나의 메서드가 길어져 전체를 한 화면에 보기 곤란한 경우 여러개의 메서드로 나누어 하나의 메서드가 30행이상이 되지 않도록 한다.

- 메서드명 위에 그 메서드가 무슨 역할을 하는지 주석에 적어둔다.

- } 가 많이 중첩된 경우 나중에 헤깔림을 방지하기 위해 } 옆에 주석으로 어느 부분 끝인지를 적어둔다.

 

 

Posted by -현's-

댓글을 달아 주세요

●웹표준 레이아웃

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>

 

<style type="text/css">
body,div,ul,li,dl,dt,dd,ol,p,h1,h2,h3,h4,h5,h6,form{margin:0; padding:0}
body{font:normal dotum, '돋움';}
ul,il,dl{list-style:none}
img{border:0; vertical-align:top;}
ul{list-style:none; padding:0; margin:0;}

 

#wrap{margin:0; auto; width:900px;  }
#header{float:left; width:900px; height:145; margin-bottom:15px;}
#sidebar{float:left; width:245px;}
#content{float:right; width:645px;}
#footer{float:left; width:900px; margin-top:20px;}
</style>

 

</head>
<body>

 

<div id="wrap">
  <div id="header">a</div>
  <div id="sidebar">b</div>
  <div id="content">c</div>
  <div id="footer">d</div>
</div>

 

</body>
</html> 

 

 

●#wrap{margin:0 auto; width:900px;}

- table에서는 align="center"로 중앙 정렬을 했지만, 웹표준에서는 따로 중앙정렬은 없다. 그래서 중앙정렬을 하려면 가장 바깥 div에 'margin:0 auto'를 선언해 준다. 'margin:0'은 상하 0px라는 뜻이고 'auto'는 좌우를 중앙에 위치하게 한다.

 

 

 

●큰 div(wrap,header,sidebar,content,footer 등)를 만들고 그 안에 세부적인 div를 만든다. 큰 div는 height값을 주지 않고 세부적인 div에 height를 준다.

 

 

 

●width, margin, padding, height 수치를 정확히 계산해서 레이아웃을 만든다. 만들 레이아웃 디자인을 프린트하고 계산기로 위의 값을 계산하면서 하면 편하다.

 

 

 

●margin은 바깥쪽 여백, padding는 안쪽 여백이다.

 

 

 

●padding값은  width값에 포함하지 않는다. 계산할때 따로 더해주어야 한다.

ex)

<div style="padding:10px; width:80px; height:80px;"></div>

여기서 총 길이는 width값 80px와 양쪽 padding값 10px+10px인 100px이다.

 

 

 

●값에 숫자만 쓰면 안되고 px등 단위를 써주어야한다.

 

 

 

●div에 테두리를 사용하려면 'border:1px solid ;border-color:blue;' 를 css에 입력한다.

ex)

#header{float:left; width:900px; height:145px; border:1px solid ; border-color:blue; margin-bottom:15px; }

 

 

 

●연습 예

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>

<style type="text/css">
/* 공통 속성 */
body,div,ul,li,dl,dt,dd,ol,p,h1,h2,h3,h4,h5,h6,form{margin:0; padding:0}
body{font:normal dotum, '돋움';}
ul,il,dl{list-style:none}
img{border:0; vertical-align:top;}
ul{list-style:none; padding:0; margin:0;}
/* 큰 div */
#wrap{margin:20px auto; width:900px;  }
#header{float:left; width:900px; height:145px; background:green; margin-bottom:15px; }
#sidebar{float:left; width:245px;}
#content{float:right; width:645px;}
#footer{float:left; width:900px; height:80px; background:green; margin-top:15px; margin-bottom:30px;  }
/* sidebar 세부 div */
#sidebar_a{width:250px ;height:150px ;background:green; margin-bottom:10px;  }
#sidebar_b{width:250px ;height:160px ;background:green; margin-bottom:10px; }
#sidebar_c{width:230px ;height:300px ;background:green; padding:10px;  }
#sidebar_c_1{width:230px ;height:145px ;background:yellow; margin-bottom:10px; }
#sidebar_c_2{width:230px ;height:145px ;background:yellow; }
/* content 세부 div */
#content_a{width:625px ; background:green ;margin-bottom:10px; padding:10px;  }
#content_a_1{width:625px ;height:90px ;background:yellow ;margin-bottom:10px;  }
#content_a_2{width:625px ;height:90px ;background:yellow; ;margin-bottom:10px ; }
#content_a_3{width:625px ;height:100px ;background:yellow; ; }
#content_b{width:645px ;height:150px ;background:green ;margin-bottom:10px ; }
#content_c{width:645px ;height:160px ;background:green ; }

</style>

</head>
<body>

<div id="wrap">
 <div id="header"></div>
 <div id="sidebar">
  <div id="sidebar_a"></div>
  <div id="sidebar_b"></div>
  <div id="sidebar_c">
   <div id="sidebar_c_1"></div>
   <div id="sidebar_c_2"></div>  
  </div> 
 </div> 
 <div id="content">
  <div id="content_a">
   <div id="content_a_1"></div>
    <div id="content_a_2"></div>
    <div id="content_a_3"></div>
  </div> 
  <div id="content_b"></div>
  <div id="content_c"></div> 
 </div>
 <div id="footer"></div>
</div>

</body>
</html>

 

 

 

 

Posted by -현's-

댓글을 달아 주세요

html, xml 등은 문서의 구조를 정의한다.
css 는 문서의 표현을 정의한다.

 

 

●html에서 구조를 나타내기 위해 사용하는 요소들

div, span, ul, ol, dl, h1~h6, p, table 등이 있다.

 

 

●css는 html의 각 구조를 시각적 표현으로 꾸며준다.

 

 

●css의 기본 규칙

- 선택자 {속성: 값; }

ex)

body {background-color: gray; }

 

 

●css의 선택자

- 스타일을 적용할 대상으로, body, p, h1 등 html의 요소명이나 id명,class명을 사용할 수 있다.

 

●css의 속성

- 해당 선택자의 어떤 스타일을 부여할지 결정한다.

 

●class 선택자와 id 선택자

- 특정 요소를 대상으로 스타일을 적용하기 위해 사용한다.

- id선택자는 사용할때 #을 쓰고 class선택자는 사용할때 .을 쓴다.

ex)

#abc {font-weight:bold;}

.def {color:gray;}

 

<p id = "abc"> ABC</p>

<p class = "def">DEF</p>

 

 

●css의 선언

- 외부파일을 불러들여 선언하는 방법

ex)

<head>

<link rel="stylesheet" type="text/css" href="css파일의 위치/css파일 이름.css"/>

</head>

 

- head범위 안에 @import로 외부 스타일시트를 참조하는 방법

ex)

<head>

<style type="text/css">

@import url("/css위치/css파일이름.css");

</style>

</head>

 

 

 

 

Posted by -현's-

댓글을 달아 주세요


●JSP는 HTML문서 사이에 JSP문법코드가 삽입된 형태로 작성된다.



●<%   %> - 스크립트릿, 이 안에 자바 코드 쓸수 있다. 

●<%=   %> - 익스프레션, 자바식 출력

●<%@   %> - 지시자, 웹컨테이너가 jsp 페이지를 처리할 때 필요한 정보를 기술

●<%!    %> - 선언부, 변수선언이나 메서드를 선언

●&{ } - 익스프레션 언어(EL)

●<jsp:~~/>, <c:~~/> - 액션 태그




●서블릿
- 장점 : 복잡한 프로그램 구현에 적합하다. 컴파일 결과만 설치해도 되므로 소스코드 유출 보호
- 단점 : HTML 문서의 디자인이 바뀔때 마다 서블릿 클랫를 수정/컴파일/설치 해야하고 웹서버를 재기동하는 일을
           되풀이 해야한다. 설치과정이 복잡하다.


●JSP
- 장점 : HTML중심의 코드구조이므로 디자인 작업에 바로 사용가능하다. 그리고 그 일이 끝나면 바로 프로그램
           로직을 고칠수 있다. 설치 과정이 간단하다
- 단점 : 프로그램 로직이 복잡할 경우 자바코드의 논리적구조를 알아보기가 힘들다. 소스코드가 공개되며,
            프로그래머가 아닌 다른 사람이 소스코드를 만져서 손상시킬 위험성이 있다.



●프로그램의 복잡한 로직을 구사하는 코드는 서블릿 클래스 안에 기술하고 프로그램의 결과를 보여주는 HTML중심의 코드만 JSP페이지안에 기술하는게 좋다.



●실무에서는 JSP페이지에 스크립팅 요스는 아예 쓰지않고 익스프레션언어(EL)와 액션만 사용하는 방법을 주로 쓴다.




●<%@   %>
- 지시자, 웹컨테이너가 JSP페이지를 서블릿 클래스로 변환할 때 필요한 여러가지 정보들은 기술하기 위해 사용하는 문법이다.
-지시자 종류
①<%@ page  어트리뷰트목록  %>

②<%@ include  어트리뷰트목록 %>

③<%@ taglib  어트리뷰트목록  %>




●page 지시자 - jsp 전체에 적용되는 정보를 기술한다.
ex)
<%@ page  contentType = "text/html; charset = euc-kr"  %>
<%@ page  import = "java.util.*" %>




●include 지시자
-  다른 페이지를 불러다 현재 jsp페이지의 일부로 만들기 위해 사용, 현재 jsp페이지를 기준으로 상대적인 url 사용
ex)
<%@ include  file = "Today.jsp" %>




●taglib 지시자 - 액션을 사용할 때 이용한다.
ex)
<%@ taglib  prefix = "c" uri = http://java.sun.com/jsp/jstl/core %>




●html 주석
<!--    주석내용   -->


●jsp 주석
<%--   주석내용   --%>






●jsp 내장객체
request
response
out
application
config
pageContext
session
page
exception





'프로그래밍 > JSP' 카테고리의 다른 글

jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
jsp 기본 문법 정리2  (0) 2012.03.11
jsp 기본 문법 정리1  (0) 2012.03.11
JSP 프로젝트 시작하기 & DB 연결하기  (0) 2012.03.10
JSP 이클립스 개발 환경 구축(세팅)  (0) 2012.03.10
Posted by -현's-

댓글을 달아 주세요

●using 지시어 - 뒤에 지정한 네임스페이스를 이용한다는 것을 선언
ex)
using System;



●Console클래스는 System 네임스페이스에 속한다.




●스트림 - 파일의 읽기 및 쓰기에 대한 데이터의 흐름을 스트림이라 한다. C#에서는 스트림 전용 클래스에서 생성한 객체를 사용한다. 스트림 클래스를 이용하려면 'using System.IO;'를 선언해야 한다.




●예외처리
ex)
try{
    예외가 발생할지도 모르는 처리
} catch(예외클래스명  변수명){
    예외 발생시 실행하는 처리
} finally{
    뒷 마무리 작업
}



●문자 읽기
①파일 열기 - FileStream클래스를 사용하여 스트림을 만들고 StreamReader라는 읽기용 클래스에 전달
ex)
FileStream fs = newStream("A.txt", "FileMode.Open");       //A.txt는 파일이름이고 FileMode는 열기모드이다
StreamReader r = new StreamReader(fs);


-열기모드
 처리  의미
 FileMode.Open  기존파일을 연다
 FileMode.OpenOrCreate  파일이 없으면 만들어서 연다
 FileMode.Append  추가모드로 연다. 파일이 없으면 만든다.
 FileMode.Create  파일을 만든다. 같은 이름 파일이 있으면 이전 파일 지우고 만든다
 FileMode.CreateNew  파일들 만든다. 같은 이름 파일이 있으면 예외가 발생한다.



②데이터를 읽는다 - StreamReader클래스의 ReadLine()메서드를 사용한다.
ex)
string s = r.ReadLine();      //ReadLine는 한행의 문자열을 읽는다.


③파일을 닫는다 - StreamReader클래스의 close()메소드 사용
ex)
r.Close();



●문자 읽기 예
ex)
using System;
using System.IO;
class Read{
   static void Main(){
        FileStream fs;
        try{
            fs = new FileStream("A.txt", FileMode.Open);     //A.txt는 실행파일과 같은 위치에 준비한다.
        }
        catch(IOException){
           Console.WriteLine("파일을 열 수 없음");
           return;
        }
        StreamReader r = new StreamReader(fs);
        string s;
        while(( s = r.ReadLine() ) != null ){
            Console.WriteLine(s);
        }
        r.Close();
     }
}


●문자 쓰기
①파일 열기 - FileStream클래스를 사용하여 스트림을 만들고 StreamWriter라는 쓰기용 클래스에 전달
ex)
FileStream fs = new FileStream("A.txt", FileMode.Create);
StreamWriter w = new StreamWriter(fs);



②데이터를 쓴다 - StreamWrite클래스의 Write()메소드를 사용
ex)
w.Write("파일에 쓸 내용");


③파일 닫기 - StreamWriter클래스의 Close()메소드를 사용
ex)
w.Close();



●키보드 입력 - Console클래스의 ReadLine()메소드 사용
ex)
string s = Console.ReadLine();



●데이터 순서를 지정하여 출력
ex)
WriteLine("{0} {1} {2} {0}", "0번째", "1번째", "2번째");

출력 : 0번째1번째 2번째 0번째
ex)
WriteLine("{1}-{0}은 {2}이다." "3","2",3-2);



●문자열 조작 메서드
- Length - 문자열 길이  반환
ex)
string a = "abc";
string b = a.Length;

- IndexOf - 문자열의 인덱스번호를 검색
ex)
string a = "abcde";
int b = a.IndexOf('d');

- Substring - 문자열 일부를 가져옴
ex)
string a = "abcde";
atring b = a.Substring(1, 3);     //인덱스번호 1부터 문자열 3개 가져온다. (인덱스 번호는 0부터 시작)



●데이터형 변환 메소드
- 다른형에서 문자열로 변환할 때 ToString() 메소드 사용
ex)
int a = 1;
string b = a.ToString();

- 문자열에서 다른 형으로 변환할 땐 각 데이터형의 Parse() 메소드 사용
ex)
string a = "10";
int b = int.Parse(a);



●C#은 c, c++과 달리 자동으로 garbage collection을 한다.


'프로그래밍 > C#' 카테고리의 다른 글

c# 기본 문법 정리5  (0) 2012.03.08
c# 기본 문법 정리4  (0) 2012.03.08
c# 기본 문법 정리3  (0) 2012.03.07
c# 기본 문법 정리2  (0) 2012.03.07
c# 기본 문법 정리1  (0) 2012.03.04
Posted by -현's-

댓글을 달아 주세요


●추상클래스 - 추상메서드를 가진 클래스이다.
●추상메서드 - 처리를 명시하지 않고 호출한 쪽만 정의한 메서드
ex)
abstract class A{
   public abstract void Add();   // '{}'안쓰고 ';'으로 끝난다.
}



●추상클래스를 상속하여 객체를 생성하려면 다음과 같이 override붙인 멤버를 준비한다.
ex)
abstract class A{
   public abstract void add();
}
class B : A{
   public override void add(){
         ~~
   }
}




●인터페이스 - 추상메서드, 추상속성, 추상인덱서, 이벤트만 멤버로 가질 수 있다.
ex)
interface A{
   public abstract void a();
   public abstract int b{
      get;
      set;
  }
}
class B : A{
   public void a(){
       ~~
   }
   public int prop{
          get{
               return b;
         }
         set{
              b=value;
         }
    }
}



●인터페이스의 정의에서 모든 메서드는 public로 취급하므로 엑세스 수식자는 생략할 수 있다.
ex)
interface A{
    void a();
    int b{
      get;
      set;
   }
}



●인터페이스는 여러개 받을 수 있다.
ex)
class X : A, B, C{
    ~~
}


●인터페이스의 상속 - 인터페이스도 클래스처럼 상속하여 새 인터페이스를 만들 수 있다.
ex)
interface A{
    ~~
}
interface B : A{
    ~~
}



●터페이스는 여러개 상속가능하다.
ex)
interface X : A, B, C{
   ~~
}


●상속원본의 인터페이스와 상속대상의 인터페이스에 각각 같은 멤버가 있을 경우 상속대상의 추상멤버에 new를 붙인다. new 안 붙이면 경고 발생
ex)
interface A{
   void e();
   void f();
}
interface B : A{
   void a();
   new e();
}



●object클래스 - 모든 클래스의 기본이 되는 클래스이다. 모든 클래스는 object클래스를 상속하고 있다.



●박스화(boxing) - 값형의 데이터를 객체형 변수에 대입하는 것
ex)
int a = 10;
object obj;
obj = a;



●박스화 해제 - 객체형의 데이터를 값형에 대입하는 것, 형을 명확히 하기 위해 형변환 사용
ex)
object obj = 10;
int b = (int)obj;



●네임스페이스 - 같은 이름의 클래스 등이 경합을 일으키지 않도록 할 수 있게 한다.
ex)
namespace A{
    class Abc{
          ~~
   }
}



●네임스페이스 안에 속해 있는 클래스를 참조하려면 '.' 사용
ex)
A.abc;



●네임스페이스 안에 네임스페이스를 만들 수 있다.
ex)
namespace A{
   namespace B{
        ~~
   }
}

namespace A{
       ~~
}
namespace A.B{
      ~~
}


'프로그래밍 > C#' 카테고리의 다른 글

c# 기본 문법 정리5  (0) 2012.03.08
c# 기본 문법 정리4  (0) 2012.03.08
c# 기본 문법 정리3  (0) 2012.03.07
c# 기본 문법 정리2  (0) 2012.03.07
c# 기본 문법 정리1  (0) 2012.03.04
Posted by -현's-

댓글을 달아 주세요


●속성 - 객체 안에 있는 필드의 값을 취득 또는 설정하는 메서드이다. 필드를 반환하는 get엑세서와 필드에 값을 대입하는 set엑세서로 구성된다. 자바에서 setter, getter랑 비슷한 개념이다
ex)
usting System;
class A{
    public int a;
    public int sok{
          get{
          return a;
          }
          set{
          a=value;
          }
      }
}

A a=new A();
a.sok = 3;              //따로 set, get을 표시하지 않고 그냥 입력 or 출력하면 된다.
Console.Write(a.sok);



●인덱서(indexer) - 객체를 배열처럼 취급하고자 할 때 사용한다. 속성과 같이 get, set으로 구성
ex)
using System;
class A{
    int []a = new int[4];
    public int this[int i]{
        get{
        return a[i];
       }
        set{
        a[i]=value;
       }
    }
}

A a = new A();
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
for(int i=0; i<=3; i++){
  Console.Write(a[i]);
}



●상속 - ' :부모클래스명'을 붙인다
ex)
class A{
   ~~
}
class B : A{
   ~~
}



●sealed - 상속되지 않도록 할 클래스는 sealed를 사용하여 봉인한다.
ex)
sealed class A{
   ~~
}



●클래스를 상속했을 때 부모클래스와 자식클래스 각각에 생성자가 있는 경우 부모클래스로부터 차레로 생성자가 작동한다.




●기본 클래스의 생성자를 호출
- 상속한 생성자에 인수가 있는 경우에는 다음과 같이 base를 이용하여 상속원본에 인수를 전달
ex)
using System;
class A{
   public int x;
   public A(int a, int b){
       x=a+b;
   }
]
class B : A{
   public B(int c, int d) : base(c, d){}
}



●이름 은폐
- 자식 클래스의 멤버에 부모클래스의 멤버와 같은 이름을 붙이고자 할 경우에는 멤버의 정의 앞에 'new'를 붙인다.
여기서 new는 객체생성시 사용하는 new랑 다르다. new가 붙은 멤버를 호출하면 자식클래스 쪽의 멤버가 호출된다.
ex)
class A{
   public int a=10;
}
class B : A{
   new public int a=30;
}



●base - 이름이 은폐된 부모클래스의 멤버를 자식클래스안에서 사용할 때 사용
ex)
using System;
class A{
   public int a=3;
}
class B : A{
   new public int a=100;
   public void print(){
      Console.WriteLine(base.a);
   }
}



●오버라이드
 -상속한 메서드와 같은 이름, 같은 인수, 같은 반환값을 가지는 메서드를 해서 덮어 쓰는것. 오버라이드 되는 메소드에는 'virtual' 키워드를 붙이고 오버라이드 한 메소드에는 'override' 키워드를 붙인다
ex)
class A{
   public virtual void bye(){
      ~~
}}
class B : A{
   public override void bye(){
      ~
}}


'프로그래밍 > C#' 카테고리의 다른 글

c# 기본 문법 정리5  (0) 2012.03.08
c# 기본 문법 정리4  (0) 2012.03.08
c# 기본 문법 정리3  (0) 2012.03.07
c# 기본 문법 정리2  (0) 2012.03.07
c# 기본 문법 정리1  (0) 2012.03.04
Posted by -현's-

댓글을 달아 주세요


●if문
if (조건) {
   내용
}
else  if(조건){
   내용
}
else{
   내용
}



●for문
int i;
for(i=0; i<3; i++){
   처리
}



●foreach문 - 배열같은 여러 데이터 모음의 각 요소를 처음부터 끝가지 한번씩 호출하여 처리할 때 사용하면 편리
ex)
int []nums=new int[5];
foreach(int  a  in  nums)
    Console.WriteLine(a);




●while문
while(조건){
   처리
}



●for문이나 while문 등의 반복을 실행도중에 중단하려면 break문, continue문 사용. 다른 언어랑 비슷함



●switch문
switch(식){
   case 값1:
          처리
          break;
   case 값2:
          처리
          break;
   default:
         처리
         break;
}



●클래스, 객체(Object) - 개념은 c++, java의 클래스와 비슷하다



●객체(Object) - 클래스를 실체화 한것. 클래스를 실체화하는 동작을 '인스턴스화하다' 또는 '객체를 생성하다'라고
                       표현한다.


●클래스의 정의
ex)
class A{
      public int a;        //접근 제한자를 생략하면 private으로 설정됨
      public int b;

      public int add(){
             return a+b;
      }
}             //c++과 달리 뒤에 ';' 안 붙임


●객체 생성 - new연산자 이용
ex)
A  a;
a = new A();
A  a = new A();



●필드 - 클래스 안의 '변수'를 뜻한다.
  메소드 - 클래스 안의 '함수'를 뜻한다.




●같은 객체내의 필드나 메소드를 참조하려면 필드명, 메소드명을 그대로 써준다.
다른 객체내의 필드나 메소드를 참조하려면 '.(마침표)'를 사용하며 '객체명.필드명' 이런식으로 사용한다.




●오버로드(overload) - 한 클래스안에 이름이 같고 인수의 수나 형이 다른 메소드를 여러개 정의하는 것. 이름이 같고 반환값이 다른 메소드는 오류 뜬다.



●생성자 - 객체의 생성과 함게 자동으로 호출되는 것으로서 클래스와 같은 이름의 특수한 메소드이다. 필드의 초기화 등에 이용한다.
ex)
class A{
     public int a, b;
     public A(){          //생성자는 반환값이 없다.
         a=0;
         b=0;
     }
}



●생성자를 작성하지 않으면 인수 없는 생성자가 자동으로 준비된다. 이것을 '디폴트 생성자'라고 한다.



●복사 생성자 - 같은 클래스의 객체를 인수로 받아 대응하는 필드에 값을 대입하는 생성자를 복사생성자라고 한다.
ex)
using System;
class A{
     public string title;
     public string writer;
     public A(string t, string w){
             title=t;
            writer=w;
     }
     public A(A a){
         title = a.title;
        writer = a.writer;
     }
}
class M{
static void Main(){
      A a = new A("책", "작가");
      A b = new A(a);
     }
}


'프로그래밍 > C#' 카테고리의 다른 글

c# 기본 문법 정리5  (0) 2012.03.08
c# 기본 문법 정리4  (0) 2012.03.08
c# 기본 문법 정리3  (0) 2012.03.07
c# 기본 문법 정리2  (0) 2012.03.07
c# 기본 문법 정리1  (0) 2012.03.04
Posted by -현's-

댓글을 달아 주세요

●C#은 객체지향 언어이다.


● .NET Framework(닷넷 프레임워크)라는 실행환경과 조화되어 움직인다. .NET Framework가 준비되어 있으면 OS와 관계없이 동작시킬 수 있다. 자바가 JavaVM상에서 동작하는 것과 비슷한 원리이다.


●C#언어 이용
-콘솔 어플리케이션
-windows 어플리케이션
-웹어플리케이션 - C#을 웹에 이용한 것이 'asp.net'이다.


●확장자로 ' .cs ' 사용



●C# 기본구조
ex)
using System;
namespace abc{
    class Hello{
          public static void Main(){
                 Console.WriteLine("HelloWorld");
           }
    }
}



●문자열 표시-Console.Write(), Console.WriteLine() 사용
ex)
Console.Write("aaa");
Console.WriteLine("aaa");     //뒤에 Line은 줄바꿈을 나타냄, 자바에서 println에서 'ln'과 같음



●변수의 선언 - 다른 프로그래밍 언어랑 유사하다
ex)
int a;
float b;
double c;
int d, e;


●변수의 표시
ex)
Console.Write(a);


●문자 - 유니코드 1개, char(발음'차')형에 저장
ex)
char a='A';    //문자는 ''로 묶는다.
                  // ""는 문자열을 묵을때 사용한다. ""를 쓸경우 null문자가 자동으로 삽입되어 두글자가 된다.
                     그러면 컴파일 에러 발생


●문자의 표시
ex)
Console.Write('A');


●문자열 - string형에 저장
ex)
string a="abc";     //문자열은 ""로 묶는다


●문자열의 결합 - + 연산자를 사용하여 연결한다.
ex)
string a="abc";
int b=3;
string c=a+b+"abc";



●배열 선언 - new연산자 이용
ex)
int []a=new int[4];
int []a=new int[]{1, 2, 3, 4};   //선언과 동시에 초기화
int []a={1, 2, 3, 4};               //선언과 동시에 초기화



●다차원 배열
ex)
-1차원
int []a=new int[3];

-2차원
int [ , ]a=new[2,3];    //쉼표로 차원을 구분

-3차원
int [ , , ]a=new int[2, 3, 4];



●다차원 배열 초기화
ex)
int [ , ]a={
       {10, 20},
       {30, 40},
       {50, 60}
};



●재그 배열 - 2차원 이상의 배열에서 각 방향의 요소 수가 일정하지 않은 배열
ex)
int [][]a=new int[3][];
a[0]=new int[3]{1, 2, 3};
a[1]=new int[2]{4, 5};
a[2]=new int[1]{6};


int [][]a=new int[][]{
      new int[]{1, 2, 3}.
      new int[]{4, 5},
      new int[]{6}
};



●length - 배열의 요소 수 구하기
ex)
int []a=new int[4];
int b=a.length;      // ()안 붙여도 됨


●열거형 선언 - enum(발음 '이념') 사용
ex)
enum A{a, b, c, d, e};
Console.WriteLine(A.a);



●bool형 - true 또는 false 중 한개의 값을 가지는 변수의 형
ex)
bool a=(x>y);



●조건 연산자 - '조건식 ? a : b; ' 조건식이 참이면 a, 거짓이면 b
ex)
bool bo;
int a= bo ? 100 : 10;   //bo가 참이면 100을, 거짓이면 10을 a에 대입



●캐스트 연산자 - 형명을 (0로 묶은것. 값이나 변수 앞에 쓰면 지정한 형으로 변환할 수 있다.
ex)
int a = 3;
int b = 2;
int c = (int) 1/b ;







'프로그래밍 > C#' 카테고리의 다른 글

c# 기본 문법 정리5  (0) 2012.03.08
c# 기본 문법 정리4  (0) 2012.03.08
c# 기본 문법 정리3  (0) 2012.03.07
c# 기본 문법 정리2  (0) 2012.03.07
c# 기본 문법 정리1  (0) 2012.03.04
Posted by -현's-

댓글을 달아 주세요


●c언어에서는 배열사이즈를 정의할 때 상수선언을 #define으로 했지만, c++에서는 const로 할 수 있다.
가능한 const를 사용하는게 좋다
ex)
c언어
 #define B 10             
int main(){
   int b[B];
}

c++
 int main(){
    const int B;
    int b[B];
}




●함수의 디폴트 인수 설정 - 거의 매번 같은 값을 가지지만 가끔씩 변경해야할 경우에 사용하면 편리
ex)
프로토 타입에서 설정
double A( int a=1, double b=3.1);

함수 정의에서 설정
 double A( int a=1, int b=3.1){
  ~~
}



●디폴트 인수 설정된 함수 호출
ex)
double area;
area=A();                //아무 것도 없으면 디폴트인수로 된다
area=A(10);             //첫번째 인수부터 채워진다. 첫번째 인수는 10, 두번째 인수는 디폴트 인수로 된다
area=A(10, 3.11);     //첫번째 두번째 인수는 10, 두번째 인수는 3.11이다



●디폴트 인수 설정시 주의점
- 디폴트 인수는 마지막 인수부터 차례로 설정해야함. 첫번째 인수에만 디폴트 설정하면 컴파일 에러 발생
ex)
double A(int a, int b=1);     //(O)
double B(int a=1, int b);     //(X), 컴파일 에러발생



●오버로딩
- 인수의 형이나 개수가 다르고 동일한 이름의 함수를 여러개 정의한것.
단, 반환형의 형만 다른 함수는 오버로딩할 수 없다.




●표준 출력 스트림 - std::cout
ex)
#include <iostream>
int a;
std::cout<<"Hello"<<"World"<<a<<std:endl;



●표준 입력 스트립 - std::cin
ex)
#include <iostream>
int a;
std::cin>>a;




●스코프 연산자('::')
- 로컬 변수와 클로벌 변수의 이름이 같을 경우 함수안에서는 로컬변수가 우선하지만
스코프연산자를 사용하면 글로벌 변수를 우선시킬 수 있다.
스코프연산자 앞에 클래스명을 붙이면 오브젝트 내의 멤버를 우선시킬 수 있다.
ex)
::a
A::a




●namespace(이름공간)
- namespace 내의 변수와 함수를 이용하기 위해서는 ' namespace명::함수명이나변수명이나클래스명'을 기술한다.
매번 'namespace::'라고 기술하는 것이 번거롭기 때문에 'using namespace 이름공간명;"을 기술하면 편하다


●namespace std
- std::cout나 std::cin은 std라는 이름공간에 있기 때문에 'using namespace std;'를 기술하면 그냥 cout, cin써도 된다.



●인라인 함수
- 함수에 'inline' 붙이면 컴파일러는 호출하는 곳으로 함수의 정의를 복사해서 넣는다. 인수를 복사하거나 함수를 호출하는 처리가 생략되므로 실행속가 빨라진다. 그러나 코드가 중복되는 만큼 프로그램의 사이즈는 커지기 때문에 모조건 인라인 함수가 좋은 것은 아니다. 주로 처리 내용이 작은 함수나 호출 횟수가 많은 함수를 인라인으로 하면 좋다.
ex)
inline int A(int a, int b){
   return a+b;
}


'프로그래밍 > c++' 카테고리의 다른 글

c++ visual c++로 프로젝트 시작하기  (0) 2013.06.11
c++ 폴더안에 있는 헤더파일 include  (0) 2013.05.26
c++ 기본 문법 정리4  (0) 2012.02.17
c++ 기본 문법 정리3  (0) 2012.02.17
c++ 기본 문법 정리2  (0) 2012.02.16
c++ 기본 문법 정리1  (0) 2012.02.16
Posted by -현's-

댓글을 달아 주세요