Now, some practical stuff!
First off, have you seen Cantor's model of the natural numbers in set theory? Intuitively speaking, every Cantor natural number is defined to be the set of all smaller Cantor natural numbers. In particular:
0 := {} (the empty set)
1 := {0} = { {} } (the set containing the empty set)
2 := {0, 1} = { {}, {{}} }
3 := {0, 1, 2} = { {}, {{}}, { {{}, {{}} } }
...
In ZF, there's a class Ord of ordinal numbers which is defined by a logical proposition that says whether or not a set is of this form. However, since we only have finite sets in your set theory, the logical condition that defines this class will simply define the natural numbers.
So, even in this "finite set theory", we can define the
class of natural numbers.
As an aside, the practical difference between a class and a set is that sets can be treated as objects, but classes cannot.
When dealing with set theory on this basic of a level, this model of the natural numbers is very convenient, because some of the basic operations are given by elementary set manipulation. Some examples:
The successor of N is given by N U {N} (U is union)
M <= N if and only if M is a subset of N
M < N if and only if M is an element of N
If Y is a set of (some) natural numbers, then the interesction of all the elements of Y is precisely the smallest element of Y.
As for functions, you are familiar with the set-theoretic definition. In particular, a function is supposed to be a set of ordered pairs. Well, you can also speak of a logic-theoretic definition of functions -- a (logic) function can be represented as a
class of ordered pairs.
So, for example, I can speak of the
function S which maps each natural numbers to its successor. It's defined by:
S(N, M) := M = N U {N}
But we would more conventionally write this as:
S(N) := N U {N}
even though the notation is the same, here I am denoting a
logic function, not a
set function.
Now, even though we cannot speak of the set of all integers, that's usually irrelevant. The nifty trick is to reduce our scope of inquiry to the relevant integers, but do it in an arbitrary way, so it's still valid for all integers!
That was a convoluted and impenetrable statement, wasn't it?

Let me try via example.
Suppose we're still trying to define the relation <. We can give these two axioms:
N < S(N)
N < M and M < L implies N < L
(we really need more axioms to do this properly)
Now, I want to prove that 0 < M if M is any integer other than 0.
Normally, this would be a straightforward proof by induction:
0 < 1.
Suppose 0 < M. Then, 0 < M and M < S(M), therefore 0 < S(M).
Thus, 0 < M for all M >= 1.
But induction works by using the set of all integers, right? The usual proof of induction goes as follows:
Suppose there is a counterexample to the theorem. Then, there must be a least counterexample, X. However, there is a Y such that X = S(Y). Since the theorem is true for Y, it must also be true for X, which is a contradiction!
Actually, we don't need to work with the set of all integers to prove induction! We can use this slightly modified proof:
Theorem: Suppose P(0) is true and P(n) implies P( S(n) ). Then, P(n) for all natural numbers n.
Suppose the theorem is false. Then, there exists a natural number, M, such that P(M) is false.
Now, take the set {0, 1, 2, ..., M}. (This
is a set, remember?) Now, among the elements of
this set, there is a least counterexample! Call it X. X is not zero (because P(0) is true) Thus, there must be a Y such that X = S(Y). However, P(Y) is true (because Y < X, and X was the least counterexample), so P( S(Y) ) = P(X) must be true, which is a contradiction.
I've been sort of rambling on this, so I'll stop here and give things a chance to sink in.