|
Client-Server Programming
Spring Semester, 2005 Introduction |
|
|---|---|---|
|
© 2005, All Rights Reserved, SDSU & Roger Whitney San Diego State University -- This page last updated 24-Jan-05 |
CS 580 Client-Server Programming Spring Semester, 2005 Doc 1 Introduction
What Client-Server Requires of a Programmer
Naming Convention for Classes, Variables & Methods
Copyright ©, All rights reserved. 2004 SDSU & Roger Whitney, 5500 Campanile Drive, San Diego, CA 92182-7700 USA. OpenContent ( http://www.opencontent.org/opl.shtml) license defines the copyright on this document
| CS 580 Spring 05 | Doc 1, Introduction Slide # 2 |
Code Complete by Steve McConnell
| CS 580 Spring 05 | Doc 1, Introduction Slide # 3 |
Introduction
Testing
Source Version Control
Network Basics
GUI
Client Development Issues
Concurrency
Server Types & Structure
Client-Server Protocols
Logging
Databases
Security
Web based Applications
Web Services
Advanced topics
This outline will be changed during the semester.
| CS 580 Spring 05 | Doc 1, Introduction Slide # 4 |
Common design issues & solutions for building a server
Issues in designing a client-server network protocol
Handling Concurrency
Accessing databases
Programming issues dealing with working on client-server code
| CS 580 Spring 05 | Doc 1, Introduction Slide # 5 |
Java
Smalltalk – VisualWorks 7.3
C#
| CS 580 Spring 05 | Doc 1, Introduction Slide # 6 |
Basic syntax of the language
Core API
Language culture - Ways of doing things in each language
Object-oriented programming
| CS 580 Spring 05 | Doc 1, Introduction Slide # 7 |
Client
Server
| CS 580 Spring 05 | Doc 1, Introduction Slide # 8 |
An advanced (or beginning) Networking course
How to use a client builder application/system
Skills & knowledge required to build client-server applications
| CS 580 Spring 05 | Doc 1, Introduction Slide # 9 |
| CS 580 Spring 05 | Doc 1, Introduction Slide # 10 |
Capitalize the first character of each word
SomeClassName
Capitalize the first character of each word except the first word
someVariableName
|
Item |
Java |
Smalltalk |
C# |
|
Class |
PascalCase |
PascalCase |
PascalCase |
|
Method |
camelCase |
camelCase |
PascalCase |
|
Field |
camelCase |
camelCase |
CamelCase |
|
Parameter |
camelCase |
camelCase |
camelCase |
|
Local Variable |
camelCase |
camelCase |
camelCase |
| CS 580 Spring 05 | Doc 1, Introduction Slide # 11 |
"Finding good names is the hardest part of OO Programming"
"Names should fully and accurately describe the entity the variable represents"
What role does the variable play in the program?
|
Data Structure |
Role, function |
|
InputRec |
EmployeeData |
|
BitFlag |
PrinterReady |
|
TrainVelocity |
Velt, V, X, Train |
|
CurrentDate |
CD, Current, C, X, Date |
|
LinesPerPage |
LPP, Lines, L, X |
Names should be as short as possible and still convey meaning to the reader
| CS 580 Spring 05 | Doc 1, Introduction Slide # 12 |
"Comments are easier to write poorly than well, and comments can be more damaging than helpful"
for i := 1 to Num do MeetsCriteria[ i ] := True; for i := 1 to Num / 2 do begin j := i + i; while ( j <= Num ) do begin MeetsCriteria[ j ] := False; j := j + i; end; for i := 1 to Mun do if MeetsCriteria[ i ] then writeln( i, ' meets criteria ' );
| CS 580 Spring 05 | Doc 1, Introduction Slide # 13 |
for PrimeCandidate:= 1 to Num do
IsPrime[ PrimeCandidate] := True;
for Factor:= 1 to Num / 2 do begin
FactorableNumber := Factor + Factor ;
while ( FactorableNumber <= Num ) do begin
IsPrime[ FactorableNumber ] := False;
FactorableNumber := FactorableNumber + Factor ;
end;
end;
for PrimeCandidate:= 1 to Num do
if IsPrime[ PrimeCandidate] then
writeln( PrimeCandidate, ' is Prime ' );
| CS 580 Spring 05 | Doc 1, Introduction Slide # 14 |
Write comments at the level of the code's intent
Comment the why rather than the how
Make every comment count
Document surprises
Avoid abbreviations
/* if allocation flag is zero */ if ( AllocFlag == 0 ) ...
/* if allocating a new member */ if ( AllocFlag == 0 ) ...
if ( AllocFlag == NEW_MEMBER ) ...
| CS 580 Spring 05 | Doc 1, Introduction Slide # 15 |
{ check each character in "InputStr" until a
dollar sign is found or all characters have
been checked }
Done := false;
MaxPos := Length( InputStr );
i := 1;
while ( (not Done) and (i <= MaxLen) ) begin
if ( InputStr[ i ] = '$' ) then
Done := True
else
i := i + 1
end;
{ find the command-word terminator }
Done := false;
MaxPos := Length( InputStr );
i := 1;
while ( (not Done) and (i <= MaxPos ) ) begin
if ( InputStr[ i ] = '$' ) then
Done := True
else
i := i + 1
end;
| CS 580 Spring 05 | Doc 1, Introduction Slide # 16 |
{ find the command-word terminator }
FoundTheEnd := false;
MaxCommandLength := Length( InputStr );
Index := 1;
while ((not FoundTheEnd) and
(Index <= MaxCommandLength)) begin
if ( InputStr[ Index ] = '$' ) then
FoundTheEnd := True;
else
Index := Index + 1;
end;
| CS 580 Spring 05 | Doc 1, Introduction Slide # 17 |
Comment the units of numeric data
Comment the range of allowable numeric values
Comment coded meanings
var
CursorX: 1..MaxCols; { horizontal screen position of cursor }
CursorY: 1..MaxRows; { vertical position of cursor on screen }
AntennaLength: Real; { length of antenna in meters: >= 2 }
SignalStrength: Integer; { strength of signal in kilowatts: >= 1 }
CharCode: 0..255; { ASCII character code }
CharAttib: Integer; { 0=Plain; 1=Italic; 2=Bold }
CharSize: 4..127; { size of character in points }
Comment limitations on input data
Document flags to the bit level
Copyright ©, All rights reserved.
2005 SDSU & Roger Whitney, 5500 Campanile Drive, San Diego, CA 92182-7700 USA.
OpenContent license defines the copyright on this document.